现在的位置: 首页 > 综合 > 正文

给二叉树加中序线索

2013年10月19日 ⁄ 综合 ⁄ 共 615字 ⁄ 字号 评论关闭

//给二叉树加中序线索
//要得到中序线索二叉树,则只要对二叉树进行一次中序遍历,在遍历的过程中使用线索地带空的指针就可以
//实现思路 :先实现中序遍历,然后再添加 添加线索的代码
void inthread()
{
 int s[n0+1] ;  //栈
 int t;//栈指针
 int p = root; //当前节点的指针,被初始化为root
 int q = 0;

 while(p || t)
 {//当前节点不为空 或者 栈不为空
  if(p)
  {//如果当前节点不为空,把当前节点入栈,节点指到当前节点的左孩子
   s[++t] = p;
   p = tree[p].llink;
  }
  else
  {//如果当前节点为空
   p = s[t--]; //p为当前节点的父亲节点
   //cout<<tree[p].data ;//如果是中序遍历,就输出了
   //现在是加上线索
   if(q)
   {//q现在是p的前驱
    if(tree[q].rlink == 0)
    {//如果前驱的右节点为0,那么线索话
     tree[q].rlink = -p;  //后续
    }
    if(tree[p].llink == 0)
    {//如果当前节点的左节点为0.那么线索话
     tree[p].llink = -q;
    }
   }

   q = p;      //q也是当前节点的父亲节点
   p = tree[p].rlink ; //p是当前节点的父亲节点的右孩子

  }
 }
}

【上篇】
【下篇】

抱歉!评论已关闭.