Merge pull request #2271 from Pika-Lee/master

Update 0235.二叉搜索树的最近公共祖先.md
This commit is contained in:
程序员Carl 2023-09-20 10:12:24 +08:00 committed by GitHub
commit 7a0851b60d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 4 additions and 4 deletions

View File

@ -50,15 +50,15 @@
因为是有序树,所有 如果 中间节点是 q 和 p 的公共祖先,那么 中节点的数组 一定是在 [p, q]区间的。即 中节点 > p && 中节点 < q 或者 中节点 > q && 中节点 < p
那么只要从上到下去遍历,遇到 cur节点是数值在[p, q]区间中则一定可以说明该节点cur就是q 和 p的公共祖先。 那问题来了,**一定是最近公共祖先吗**
那么只要从上到下去遍历,遇到 cur节点是数值在[p, q]区间中则一定可以说明该节点cur就是p 和 q的公共祖先。 那问题来了,**一定是最近公共祖先吗**
如图,我们从根节点搜索,第一次遇到 cur节点是数值在[p, q]区间中,即 节点5此时可以说明 p 和 q 一定分别存在于 节点 5的左子树和右子树中。
如图,我们从根节点搜索,第一次遇到 cur节点是数值在[q, p]区间中,即 节点5此时可以说明 q 和 p 一定分别存在于 节点 5的左子树和右子树中。
![235.二叉搜索树的最近公共祖先](https://code-thinking-1253855093.file.myqcloud.com/pics/20220926164214.png)
此时节点5是不是最近公共祖先 如果 从节点5继续向左遍历那么将错过成为q的祖先 如果从节点5继续向右遍历则错过成为p的祖先。
此时节点5是不是最近公共祖先 如果 从节点5继续向左遍历那么将错过成为p的祖先 如果从节点5继续向右遍历则错过成为q的祖先。
所以当我们从上向下去递归遍历,第一次遇到 cur节点是数值在[p, q]区间中那么cur就是 p和q的最近公共祖先。
所以当我们从上向下去递归遍历,第一次遇到 cur节点是数值在[q, p]区间中那么cur就是 q和p的最近公共祖先。
理解这一点,本题就很好解了。