我们在上一章中,学习了二叉树的数据结构。因为二叉树的特殊性,它不同于普通的树,所以可以使用顺序存储结构来存储。但是,用顺序存储结构会存在浪费空间的弊端。之后,我们学习了二叉链表。用链式存储结构存储树,结点结构为一个数据域data,两个指针域lchild、rchild。树的数据结构讲完 ...
线索二叉树 threaded binary tree 上图所示的二叉链表,存在多个空指针域。假设一个二叉链表的结点数为n,则共有 n个指针域。而n个结点的二叉树共有n 条分支。所以空指针域的个数为: n n n 。 可以在这n 个空指针域中保存结点的 以先序 中序或后序遍历的 前驱和后继指针,这样在下次遍历时,可以大大提高速度。 将所有空指针域中的rchild指向它的后继。 将所有空指针域中的lc ...
2012-11-03 16:04 1 6386 推荐指数:
我们在上一章中,学习了二叉树的数据结构。因为二叉树的特殊性,它不同于普通的树,所以可以使用顺序存储结构来存储。但是,用顺序存储结构会存在浪费空间的弊端。之后,我们学习了二叉链表。用链式存储结构存储树,结点结构为一个数据域data,两个指针域lchild、rchild。树的数据结构讲完 ...
,线索二叉树就是充分利用二叉树节点中的空指针,让它们分别指向本节点的前驱或者后继。既充分利用了资源,又方便 ...
。 二叉树线索化可以利用二叉树中指向左右子树的空指针来存放节点的前驱和后继信息可以使用以下结点结构: ...
二叉树的线索化: 二叉树是一种非线性结构,遍历二叉树几乎都是通过递归或者用栈辅助实现非递归的遍历。用二叉树作为存储结构时,取到一个节点,只能获取节点的左孩子和右孩子,不能直接得到节点的任一遍历序列的前驱或者后继。 为了保存这种在遍历中需要的信息,我们利用二叉树中指向左右子树的空指针来存放 ...
1.遍历前序线索二叉树 如果当前结点有左孩子,则应该更新p指向左孩子,否则指向右孩子,这与中序遍历线索二叉树不同,中序遍历时,能够确定当前结点的左子树一定被访问过了,直接更新p指向右孩子 2.前序线索化二叉树 3.删除线索二叉树所占空间 ...
后序线索二叉树中,结点的后继: 如果结点的双亲有右孩子,则结点的后继为双亲的右子树中第一个被访问的结点 如果结点的双亲没有右孩子,则结点的后继为双亲 如果结点为双亲的右孩子,则结点的后继为双亲 因为找到后序遍历中,找到结点的后继需要知道节点的双亲,所以可以用三叉链表 ...
线索二叉树 基本概念: n个结点的二叉链表中共有2n个链域,但只有n-1个有用的非空链域,其余n+1个是空的,利用这n+1个空链域来存放遍历过程中结点的前驱和后继;规定:若结点有左子树,则其LChild指向左孩子,否则LCHild指向 ...
2018-11-20-18:25:23 一:二叉树 1.二叉树的性质 ①:在二叉树的第i层上至多有pow(2,i-1)个结点(i>=1)。 ②:深度为k的二叉树至多有pow(2,k)-1个结点(k>=1)。 ③:对任何一颗二叉树T,如果其终端结点的个数为n0,度 ...