1 | 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 |
二叉搜索树是排序过的,位于左子树的结点都比父结点小,而位于右子树的结点都比父结点大,我们只需要从树的根结点开始和两个输入的结点进行比较。
如果当前结点的值比两个结点的值都大,那么最低的共同父结点一定是在当前结点的左子树中,于是下一步遍历当前结点的左子结点。
如果当前结点的值比两个结点的值都小,那么最低共同父结点一定在当前结点的右子树中,于是下一步遍历当前结点的右子结点。
这样在树中从上到下找到的第一个在两个输入结点的值之间的结点,就是最低的公共祖先。
1 | /** |
参考文献
剑指offer