在二叉树的结点上加上线索的二叉树称为线索二叉树,对二叉树以某种遍历方式(如先序、中序、后序或层次等)进行遍历,使其变为线索二叉树的过程称为对二叉树进行线索化
线索化二叉树的本质,实际上是对原始二叉树中的指向为空(NULL)的指针域进行利用,我们让其指向为NULL的指针域指向前驱(左孩子)或者是后继(右孩子),但是我们怎么来辨别是树节点还是指向其前驱还是后继呢?
核心思想:
我们为每一个树节点增加两个标志域lThread和rThread,如果左子树是指向的是线索(前驱),那么lThread为true,如果指向的是树节点,那么lThread为false 。同理,如果右子树指向的是线索(后继),那么rThread为true**,如果指向的树节点,那么rThread为false。
在了解了线索化二叉树的核心思想之后,我们怎么来构建一颗线索化二叉树呢?
- 1、我们先构建一颗树,然后再按某种遍历来线索化它,我们这里实现的是中序遍历 来线索化这棵二叉树。
- 2、构建完成之后,我们将这棵树线索化的同时,给这棵树加一个头结点head,目的是为了方便操作。
- 3、最后遍历的输出