2018-03-28 线索二叉树

二叉树链表中有很多空指针,比如叶子节点,会有左右孩子两个空指针。如何把这些空指针利用起来呢?那就是线索二叉树

在这些节点上,可以存储按照二叉树某种遍历顺序的前后节点,这样就不需要每次都遍历二叉树,从而快速点位节点。

哪一种遍历顺序是最有效的呢?要求是最好有两个空指针的节点在非空节点的中间,这样就可以记录前前驱后继节点。 这个遍历方法叫中序遍历方法。这样包含线索的二叉树,叫做线索二叉树

线索二叉树节点

因为不是所有的节点都包含两个空指针,如果只含有一个空指针的时候,就无法判断,另一个非空指针是指向前驱或者后继或者是孩子节点,所以,在节点结构中增加2bit,用于指示是指针的类型。

线索二叉树的实现

首先定义数据类型

定义节点:注意枚举的使用,默认从0开始

只有构建了线索二叉树,才能使用非迭代的方法,通过前驱和后继的方法,通过迭代遍历二叉树 。

线索二叉树其实是一个线性双循环链表,里面有一个很关键的头结点,这个是线性表中的结构,不同于根节点

 

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1 序 2016年6月25日夜,帝都,天下着大雨,拖着行李箱和同学在校门口照了最后一张合照,搬离寝室打车去了提前租...
    RichardJieChen阅读 10,610评论 0 12
  • 四、树与二叉树 1. 二叉树的顺序存储结构 二叉树的顺序存储就是用数组存储二叉树。二叉树的每个结点在顺序存储中都有...
    MinoyJet阅读 5,507评论 0 7
  • 树的概述 树是一种非常常用的数据结构,树与前面介绍的线性表,栈,队列等线性结构不同,树是一种非线性结构 1.树的定...
    Jack921阅读 9,934评论 1 31
  • 原链接:理解线索二叉树|CloudWong 线索二叉树原理 遍历二叉树的其实就是以一定规则将二叉树中的结点排列成一...
    简Cloud阅读 12,641评论 1 16
  • 一、 概念 二叉树按照先序、中序、后续遍历的方法形成一个线性序列后,每个结点(除第一个和最后一个外),都有且仅有一...
    Qi0907阅读 5,457评论 0 1