题目
- 输入二叉树中的两个结点,输出这两个结点在树中最低的共同父结点
- 二叉树中两个节点的距离
分析
- 还是递归吧:
思路: 如果这两个节点不在同一个子树下面,那么这棵树的根节点就是他们的共同最低父节点。
如果两个都在右子树,那么以右子树的最上面的那个节点作为根节点,重新进行判断,递归调用。
同理两个都在左子树,则方法同上。 也就是说,最终的结果分别只有三种情况,一个节点在右子树,一个节点在左子树。两个节点都在右子树,两个节点都在左子树。
如果是第一种情况,那么当前的节点就是他们最低的公共节点,左右都在左子树,或者在右子树,那么就递归调用。
那么问题就变成了如何判断是否在同一子树。