您的位置:首页 > 其它

二叉树两结点的最低共同父结点

2012-03-12 16:31 344 查看
题目:求二叉树两节点的最低共同父节点

代码;

//求node节点是否在head树中

bool findNode(Tree* head,Tree* node)

{

if(head==null||node==null)

return false;

if(head==node)

return true;

if(!head->left)

findNode(head->left,node);

else

findNode(head->right,node);

return false;

}

Tree* findLastFather(Tree* head,Tree* node1,Tree* node2)

{

if(head==null||node1==null||node2==null)

return null;

bool leftnode1=false;

bool leftnode2=false;

if(head->left!=null)

{

leftnode1=findNode(head->left,node1);

leftnode2=findNode(head->left,node2);

}

if(leftnode1&&leftnode2)

{

if(head->left==node1||head->left==node2)

return head;

findLastFather(head->left,node1,node2);

}

bool rightnode1=false;

bool rightnode2=false;

if(head->right!=null)

{

if(!leftnode1)

rightnode1=findNode(head->right,node1);

if(!leftnode2)

rightnode2=findNode(head->right,node2);

}

if(rightnode1&&rightnode2)

{

if(head->right==node1||head->right==node2)

return head;

findLastFather(head->right,node1,node2);

}

if((leftnode1&&rightnode2)||(leftnode2&&rightnode1))

return head;

return null;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: