扫码加入训练营

牢记核心词

学习得礼盒

计算机考研:数据结构常用算法精析(6)

2013-12-11 14:35:35来源:新东方在线编辑

  线索化二叉树的遍历

  有了线索的二叉链表那么遍历就方便多了,不需要借助栈也不需要用递归了,因为他已经把前驱后继都连起来了,而不像二叉树那样,走不动的时候就只能退栈了。 而且遍历速度快。

  算法思路:先找到中序下的第一结点,访问之;若被访问的结点的右指针为线索指针,直接取其后继结点访问;……,直到被访问结点的右子树存在,再从相应右子起找中序下的第一结点,……,依次类推,直到整个树遍历完毕。

  算法描述:

  BTptr Tinorder(BTptr Thrt) //对中序线索二叉树的遍历//

  {

  BTptr p=T->lchild; //P 指向的是根结点

  while(p!=Thrt) //循环链表没有到头结点

  {

  while(p->Ltag==Link) p=p->Lchild; //找到中序下的第一结点//

  visit(p);

  while(p->Rtag==Thread&&p->Rchild!=Thrt)//如果右指针指向的是后继结点

  { p=p->Rchild; //那么就大胆的访问吧,取p后继结点,访问之//

  visit(p);

  }

  p=p->Rchild; // 如果不是后继结点,那么还得按照中序遍历的方法求得后继//

  }

  }

  在中序线索二叉树中,每一非空的线索均指向其祖先结点。

  在二叉树上,对有左右子女的结点,其中序前驱是其左子树上按中序遍历的最右边的结点(该结点的后继指针指向祖先),中序后继是其右子树上按中序遍历的最左边的结点(该结点的前驱指针指向祖先)。

  非空二叉树中序遍历第一个结点无前驱,最后一个结点无后继,这两个结点的前驱线索和后继线索为空指针。

考研公开课小程序

本文关键字: 计算机 考研 数据结构

考研英语核心词汇营

背词+听课+练习+督学,学习得礼盒

更多资料
更多>>
更多内容

关注新东方在线考研服务号

获得21考研真题及答案解析

1. 打开手机微信【扫一扫】,识别上方二维码;
2.点击【关注公众号】,获取资料大礼包。

近10年考研真题及答案免费下载
更多>>
更多公开课>>
更多>>
更多资料