1、提出问题
在一些项目中需要频繁的遍历二叉树,但是二叉树的遍历比单链表的遍历复杂多了,并且递归总是会有额外开销。。。
那有没有一种方法,能像链表那样方便的快速遍历二叉树呢?
答案当然就是–线索化二叉树
2、线索化二叉树
- 线索化二叉树指的是将二叉树中的结点进行逻辑意义上的“重排列”,使其可以线性的方式访问每一个结点
- 二叉树线索化之后每个结点都有一个线性下标,通过这个下标可以快速访问结点,而不需要遍历二叉树
3、线索化方法一
这种方法和二叉树遍历法中的前序遍历很相似,甚至结果都是一样的!
算法思想:
算法实现:
/*
* 线索化
* 依据 空的左指针域 线索化
*/
void thread_btree_left(BTreeNode *root,BTreeNode **pp)
{
if((root !=