logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

洛谷P15801 [GESP202603 六级] 完全二叉树

这道题让我们找所有子树里完全二叉树的数量,我们用DFS遍历每个节点就行。首先得明白完全二叉树的特点:要么是满二叉树,要么最后一层左边全满、右边缺几个。所以给每个节点存两个状态,h[u]是子树高度,dp[u]标记子树类型:2代表满二叉树,1代表非满的完全二叉树,0不是完全二叉树。DFS的时候先递归左右孩子,再判断当前节点:叶子节点肯定是满二叉树;只有左孩子且左孩子是满二叉树,那当前是完全二叉树;左孩

#算法#深度优先#c++
洛谷B4016 树的直径题解(3种解法递进)

本文介绍了三种求解树直径的算法:1)两次DFS法,先任选节点找到最远点x,再从x出发找到最远点y,x-y即为直径;2)树形DP法,记录每个节点的最长和次长子路径,直径即为两者之和;3)优化DP法,合并最长和次长记录,简化计算过程。三种方法时间复杂度均为O(n),其中第一种最易理解,第三种代码最简洁。输入n个节点和n-1条边后,输出树的直径长度。三种解法都通过深度优先搜索实现,适用于大规模数据(n≤

#深度优先#算法#图论 +2
到底了