2016考研计算机冲刺考点梳理:线索二叉树的遍历

发布时间:2017-11-20 编辑:yangjie

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

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

  算法描述:

  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; // 如果不是后继结点,那么还得按照中序遍历的方法求得后继//

  }

  }

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

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

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

以上是小编为大家整理好的有关考研的资料,希望对大家有所帮助!如有疑问请关注应届毕业生网!

2016考研计算机冲刺考点梳理:线索二叉树的遍历相关推荐

最新推荐
热门推荐