公共祖先

50 阅读1分钟

我们先找到p和q两个节点,然后向上去寻找这两个节点的交汇点,就是它们的最近公共祖先节点。

但是二叉树是不能从下往上遍历的,但是我们可以从下往上处理。

我们可以先从上往递归,如果遇到了p,q就用回溯把最近公共祖先节点向上返回,具体返回如下:

首先我们先从上往下遍历找到p,q节点。

如果左子树不为空,那么左子树就用可能是p节点,那么就向上返回。

如果右子树不为空,那么右子树就有可能是q节点,向上返回。

如果左右子树都不为空,那么当前节点就一定是最近公共祖先节点

image.png

image.png