目录
一、解题思路
1.计算二叉树深度
采用深度优先搜索(DFS)算法。从根节点开始递归遍历,对于每个节点,其深度等于其所有子树深度的最大值加一。通过不断递归到叶子节点,然后回溯计算出整棵树的深度。
2.计算二叉树宽度
运用广度优先搜索(BFS)算法。从根节点入队,在每一层遍历时,记录当前层节点的数量,取各层节点数量的最大值即为二叉树的宽度。在遍历过程中,依次将当前层节点的子节点入队,进行下一层的遍历。
3.计算节点间距离
先找到两个节点的最近公共祖先(LCA)。分别从两个节点向上遍历到根节点,记录路径上的节点。当找到第一个公共节点时,该节点即为最近公共祖先。两个节点到最近公共祖先的距离之和就是它们之间的距离,这里距离的计算按照题目规定,向上到根节点的边数两倍加上向叶子节点的边数。
二、求解
三、注意点
1.输入合法性
要对输入的节点数、边的信息以及要求距离的两个节点编号进行合法性检查,防止越界等错误输入。
2.根节点假设
本题明确根节点为一号节点,在代码实现中要基于此假设进行操作,若题目未明确根节点,需先找出根节点(如没有父节点的节点为根节点)。
3.距离计算规则
严格按照题目中给定的节点间距离计算规则进行计算,即从u到v的最短有向路径上向根节点的边数的两倍加上向叶子节点的边数。
四、涉及知识点
1.深度优先搜索(DFS)
用于计算二叉树的深度,是一种用于遍历或搜索树或图的算法,沿着树的深度遍历树的节点,尽可能深地探索树的分支。
2.广度优先搜索(BFS)
用于计算二叉树的宽度,从根节点开始,沿着树的宽度遍历树的节点,一层一层地进行探索。
3.最近公共祖先(LCA)
在树或图中,两个节点的最近公共祖先是指同时是这两个节点祖先的节点中离根节点最远的节点。在本题中用于计算节点间的距离。