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;
//以上为:如果左右子树至少有一个为空,说明另一个子树可能为空或非空,返回具有非空可能的子树
}
Leetcode第236题二叉树的最近公共祖先|C语言
于 2023-02-23 17:01:05 首次发布