知识大全 树 - 线索二叉树 (二)

Posted 结点

篇首语:提兵百万西湖上,立马吴山第一峰!本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 树 - 线索二叉树 (二)相关的知识,希望对你有一定的参考价值。

  二叉树的线索化

   线索化和线索化实质

  将二叉树变为线索二叉树的过程称为 线索化

  按某种次序将二叉树线索化的实质是 按该次序遍历二叉树 在遍历过程中用线索取代空指针

  具体过程可

   二叉树的中序线索化

  ( )分析

  算法与中序遍历算法类似 只需要将遍历算法中访问结点的操作具体化为建立正在访问的结点与其非空中序前趋结点间线索

  该算法应附设一个指针pre始终指向刚刚访问过的结点(pre的初值应为NULL) 而指针p指示当前正在访问的结点 结点*pre是

  结点*p的前趋 而*p是*pre的后继

  ( )将二叉树按中序线索化的算法

  typedef enum Link Thread PointerTag; //枚举值Link和Thread分别为

  typedef struct node

  DataType data;

  PointerTag ltag rtag; //左右标志

  Struct node *lchild *rchild;

   BinThrNode;\\\\线索二叉树的结点类型

  typedef BinThrNode *BinThrTree;

  BinThrNode *pre=NULL; //全局量

  void lnorderThreading(BinThrTree p)

  //将二叉树p中序线索化

  if(p) //p非空时 当前访问结点是*p

  InorderThreading(p >lchild); //左子树线索化

  //以下直至右子树线索化之前相当于遍历算法中访问结点的操作

  p >ltag=(p >lchild)?Link Thread; //左指针非空时左标志为Link

  //(即 ) 否则为Thread(即 )

  p >rtag=(p >rchild)?Link Thread;

  *(pre) //若*p的前趋*pre存在

  if(pre >rtag==Thread) //若*p的前趋右标志为线索

  pre >rchild=p; //令*pre的右线索指向中序后继

  if(p >ltag==Thread) //*p的左标志为线索

  p >lchild=pre; //令*p的左线索指向中序前趋

   // 完成处理*pre的线索

  pre=p; //令pre是下一访问结点的中序前趋

  InorderThreeding(p >rehild); //右子树线索化

  //endif

   //InorderThreading

  ( )算法分析

  和中序遍历算法一样 递归过程中对每结点仅做一次访问 因此对于n个结点的二叉树 算法的时间复杂度亦为O(n)

   二叉树的前序线索化和后序线索化

cha138/Article/program/sjjg/201311/23879

相关参考

知识大全 树 - 线索二叉树 (一)

  线索二叉树概念  定义  n个结点的二叉链表中含有n+个空指针域利用二叉链表中的空指针域存放指向结点在某种遍历次序下的前趋和后继结点的指  针(这种附加的指针称为线索)  这种加上了线索的二叉链表

知识大全 树 - 线索二叉树 (四)

  ()在后序线索二叉树中查找指定结点*p的后序前趋结点  在后序线索二叉树中查找指定结点*p的后序前趋结点的具体规律是  ①若*p的左子树为空则p>lchild是前趋线索指示其后序前趋结点  

知识大全 线索二叉树

线索二叉树概念.定义  n个结点的二叉链表中含有n+个空指针域利用二叉链表中的空指针域存放指向结点在某种遍历次序下的前趋和后继结点的指针(这种附加的指针称为线索)  这种加上了线索的二叉链表称为线索链

知识大全 数据结构考研分类复习真题 第六章 树和二叉树 (二)[3]

  .任何二叉树的后序线索树进行后序遍历时都必须用栈【西安交通大学二(分)】  .任何一棵二叉树都可以不用栈实现前序线索树的前序遍历【西安交通大学二(分)】  .由一棵二叉树的前序序列和后序序列可以唯

知识大全 数据结构考研分类复习真题 第六章 树和二叉树 (四)[22]

  .请说明是否存在这样的二叉树即它可以实现后序线索树进行后序遍历时不使用栈而对前序线索树进行前序遍历时又有什么样的二叉树可不使用栈【西安电子科技大学二(分)】  .一棵左右子树均不空的二叉树在先序线

知识大全 数据结构考研分类复习真题 第六章 树和二叉树 (五)[24]

  给出中序线索树的结点结构并画出一个具有头结点的中序线索树使其树结点至少应有个写一算法在不使用栈和递归的情况下前序遍历一中序线索树并分析其时间复杂性【东南大学三(分)三(分)六(分)】  .设有二叉

知识大全 线索二叉树的运算

线索二叉树的运算.查找某结点*p在指定次序下的前趋和后继结点()在中序线索二叉树中查找结点*p的中序后继结点  在中序线索二叉树中查找结点*p的中序后继结点分两种情形  ①若*p的右子树空(即p>

知识大全 数据结构考研分类复习真题 第六章 树和二叉树 (三)[7]

  .设y指向二叉线索树的一叶子x指向一待插入结点现x作为y的左孩子插入树中标志域为ltag和rtag并规定标志为是线索则下面的一段算法将x插入并修改相应的线索试补充完整(lchildrchild分别

知识大全 数据结构之线索二叉树

基本概念  用五个标志域来存储结点的结构   以这种结点结构构成的二叉链表作为二叉树的存储结构叫做线索链表(ThreadedLinkedLists)  线索指向结点前驱和后继的指针  线索二

知识大全 数据结构考研分类复习真题 第六章 树和二叉树 (四)[20]

  .对下图所示二叉树分别按前序﹑中序﹑后序遍历给出相应的结点序列同时给二叉树加上中序线索【青岛海洋大学年一(分)】  假设一个二叉树的两种遍历如下  前序ABFGCHDEIJLK &nbs