我们怎样才能找到二叉树的两个不同节点的最近祖先?
答案 0 :(得分:0)
对于从左节点到根节点的路径上的每个节点,检查该节点是否在从右节点到根节点的路径上。
答案 1 :(得分:0)
试试这个:
ances(struct tree *root, struct tree *p, struct tree *q)
{
struct tree *left, *right, *temp;
if(root->left==p || root->right==p || root->left==q || root->right==q)
{
return(root);
}
else
{
left = ancestor(root->left, p, q);
right = ancestor(root->right, p, q);
if(left!=NULL && right!=NULL)
{
return(root);
}
else
{
temp = (left != NULL) ? left : right;
return(temp);
}
}
if(root == NULL)
return NULL;
}