This commit is contained in:
programmercarl
2022-09-22 11:39:53 +08:00
parent 83c4a31098
commit 5a1841aa2b
9 changed files with 65 additions and 55 deletions

View File

@@ -51,7 +51,13 @@
使用后序遍历,回溯的过程,就是从低向上遍历节点,一旦发现满足第一种情况的节点,就是最近公共节点了。
**但是如果p或者q本身就是最近公共祖先呢其实只需要找到一个节点是p或者q的时候直接返回当前节点无需继续递归子树。如果接下来的遍历中找到了后继节点满足第一种情况则修改返回值为后继节点否则继续返回已找到的节点即可。为什么满足第一种情况的节点一定是p或q的后继节点呢?大家可以仔细思考一下。**
**但是如果p或者q本身就是最近公共祖先呢**
其实只需要找到一个节点是p或者q的时候直接返回当前节点无需继续递归子树。
如果接下来的遍历中找到了后继节点满足第一种情况则修改返回值为后继节点,否则,继续返回已找到的节点即可。
为什么满足第一种情况的节点一定是p或q的后继节点呢?大家可以仔细思考一下。
递归三部曲: