题目要求:给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。
思路:与普通二叉树的公共祖先问题相比,二叉搜索树由于其自身特点,过程会比较简单。如果root大于这两个指定节点,说明其最近公共祖先一定在root左子树中;同理root小于这两个指定节点,最近公共祖先一定在其右子树中;如果root的大小在这两个节点之间,说明root就是最近公共祖先(从root开始分开),所以按这个过程使用迭代法会非常简单,但递归法同样可以实现。
leetcode实战:
代码实现:
迭代法:
递归法:
题目要求:给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。
思路:与普通二叉树的公共祖先问题相比,二叉搜索树由于其自身特点,过程会比较简单。如果root大于这两个指定节点,说明其最近公共祖先一定在root左子树中;同理root小于这两个指定节点,最近公共祖先一定在其右子树中;如果root的大小在这两个节点之间,说明root就是最近公共祖先(从root开始分开),所以按这个过程使用迭代法会非常简单,但递归法同样可以实现。
leetcode实战:
代码实现:
迭代法:
递归法: