主题:紧急求助:二叉树求助!!!
gorila
[专家分:0] 发布于 2006-10-31 20:17:00
已知一棵二叉树结点位置,如何求它的双亲和兄弟????
谁能给出算法或源程序?????
回复列表 (共3个回复)
沙发
maninred [专家分:80] 发布于 2006-11-01 01:12:00
通过遍历整棵树,然后用一个临时指针指向当前节点的父节点作为回溯,当找到的时候,就回溯到他的父节点,然后就可以找到他的兄弟节点。
板凳
max810511 [专家分:170] 发布于 2006-11-01 12:10:00
void lookup(btree * root,btree *thenode,btree *parent,btree *brother)
{
btree * queue[MAX] , * p; int head=0,tail=1;
p=root;
/*先找到双亲结点*/
while(p->lchild != thenode && p->rchild != thenode)
{
if(p->lchild)
queue[tail++]=p->lchild;
if(p->rchild)
queue[tail++]=p->rchild;
p=queue[++head];
}
/*返回指针*/
parent=p;
if(p->lchild==thenode)
brother=rchild;
else
brother=lchild;
}
空想的,没经过测试。
3 楼
77706127 [专家分:30] 发布于 2006-11-02 18:19:00
严蔚敏书上有
我来回复