struct TreeNode* lowestCommonAncestor(struct TreeNode* root, struct TreeNode* p, struct TreeNode* q) {
if(root==NULL)
return NULL;
else if(root==p||root==q)
return root;//如果根节点是p或q二者之一,则返回根结点
struct TreeNode *left=lowestCommonAncestor(root->left,p,q);//递归遍历左子树
struct TreeNode *right=lowestCommonAncestor(root->right,p,q);//递归遍历右子树
if(left&&right)
return root;//如果左右子树都非空,说明现根节点为最近公共祖先
else if(left==NULL)
return right;
else
return left;
//以上为:如果左右子树至少有一个为空,说明另一个子树可能为空或非空,返回具有非空可能的子树
}

该代码实现了一个函数,用于在二叉树中寻找两个指定节点的最低公共祖先。函数通过递归遍历左子树和右子树,当左右子树都非空时,当前根节点即为最近公共祖先;否则返回非空子树的节点。
646

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



