回 帖 发 新 帖 刷新版面

主题:紧急求助:二叉树求助!!!

已知一棵二叉树结点位置,如何求它的双亲和兄弟????
谁能给出算法或源程序?????

回复列表 (共3个回复)

沙发


通过遍历整棵树,然后用一个临时指针指向当前节点的父节点作为回溯,当找到的时候,就回溯到他的父节点,然后就可以找到他的兄弟节点。

板凳

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 楼

严蔚敏书上有

我来回复

您尚未登录,请登录后再回复。点此登录或注册