给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。
百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”
说明:
- 所有节点的值都是唯一的。
- p、q 为不同节点且均存在于给定的二叉搜索树中。
TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {
if(nullptr == root)
return nullptr;
if((p->val <= root->val && q->val >= root->val) || (p->val >= root->val && q->val <= root->val)) {
return root;
}
if(p->val < root->val && q->val < root->val)
return lowestCommonAncestor(root->left, p, q);
return lowestCommonAncestor(root->right, p, q);
}

本文介绍了一种在二叉搜索树中查找两个指定节点的最近公共祖先的方法。最近公共祖先是指在有根树中,两个节点的共同祖先中深度最大的节点。文章提供了详细的算法实现,并解释了其工作原理。
301

被折叠的 条评论
为什么被折叠?



