一、线索二叉树
-
规律:在有n个节点的链式二叉树中必定存在 n+1 个空指针
-
链式二叉树中有很多的空指针,可以让这些空指针指向前一个节点\后一个节点,从而在有序遍历(中序遍历)二叉树时,不需要使用递归而通过循环即可以完成,并且效率要比递归快得多
-
一定是搜索二叉树
线索二叉树的结构
typedef struct TreeNode { int data; // 数据域 struct TreeNode* left; bool lflag; // 左子树是否是线索 为真时,左子树是线索 指向前一个节点 struct TreeNode* right; bool rflag; // 右子树是否是线索 为真时,右子树是线索 指向下一个节点 }TreeNode;
构建线索二叉树
-
首先需要有一颗搜索二叉树,然后通过中序遍历并生成线索,通过检查右子树是否为空来决定是否生成线索,让右子树指向下一个节点。
-
当构成线索二叉树后 ,可以通过循环遍历的方式有序遍历二叉树,不需要中序递归遍历也可以