树结构之线索化二叉树
数列 {1, 3, 6, 8, 10, 14 } 构建成一颗二叉树 当对上面的二叉树进行中序遍历时,顺序为: 8, 3, 10, 1, 6, 14 ,但是 6, 8, 10, 14 这几个节点的 左右指针,并没有完全的利用上 . 如 果希望充分的利用 各 个节点的左右指针, 让各个节点可以指向自己的前后节点,该怎么办? 解决方案: 线索二叉树 中序线索化后: 1、 n 个结点的二叉链表中含有 n+1 【 公式 2n- (n-1)= n+1】 个 空指针域。利用二叉链表中的空指针域,存放指 向 该 结点 在 某种遍历次序 下的前驱和后继结 点的指针( 这种附加的指针称为 " 线索 " ) 2、这种加上了线索的二叉链表称为 线索链表 ,相应的二叉树称为 线索二叉树 (Threaded BinaryTree ) 。根据线索性质的不同,线索二叉树可分为 前序线索二叉树、中序线索二叉树 和 后序线索二叉树 三 种 3、一个结点的前一个结点 ,称为 前驱 结点 4、一个结点的后一 个结点 ,称为 后继 结点 注意: 1、left 指向的是左子树,也可能是指向的前驱节点 . 比如节点1的 left 指向的左子树 , 而节点10的 left 指向的就是前驱节点 . 2、right指向的是右子树,也可能是指向后继节点,比如 节 点1的 right 指向的是右子树,而节点10的 right