- 2
- 0
- 约2.68万字
- 约 140页
- 2019-05-06 发布于广东
- 举报
树的特点 每棵子树的根结点有且仅有一个直接前驱,但可以有0个或多个直接后继。 二叉树的顺序表示 二叉树遍历 树的遍历就是按某种次序访问树中的结点,要求每个结点访问一次且仅访问一次。 设访问根结点记作 V 遍历根的左子树记作 L 遍历根的右子树记作 R 则可能的遍历次序有 前序 VLR 镜像 VRL 中序 LVR 镜像 RVL 后序 LRV 镜像 RLV 中序遍历 (Inorder Traversal) 中序遍历二叉树算法的框架是: 若二叉树为空,则空操作; 否则 中序遍历左子树 (L); 访问根结点 (V); 中序遍历右子树 (R)。 遍历结果 a + b * c - d - e / f 前序遍历 (Preorder Traversal) 前序遍历二叉树算法的框架是: 若二叉树为空,则空操作; 否则 访问根结点 (V); 前序遍历左子树 (L); 前序遍历右子树 (R)。 遍历结果 - + a * b - c d / e f 后序遍历 (Postorder Traversal) 后序遍历二叉树算法的框架是: 若二叉树为空,则空操作; 否则 后序遍历左子树 (L); 后序遍历右子树 (R); 访问根结点 (V)。 遍历结果 a b c d - * + e f / - 应用二叉树遍历的事例 二叉树的计数 由二叉树的前序序列和中序序列可唯一地确定一棵二叉树。 例, 前序序列 { ABHFDECKG } 和中序序列 { HBDFAEKCG }, 构造二叉树过程如下: 前序序列 { ABHFDECKG } 线索化二叉树 (Threaded Binary Tree) 通过中序遍历建立中序线索化二叉树 template class Type void ThreadTreeType :: InThread ( ThreadNodeType * current, ThreadNodeType * pre ) { if ( current != NULL ) { InThread ( current-leftChild, pre ); //递归, 左子树线索化 if ( current-leftChild == NULL ) { current-leftChild = pre; current-leftThread = 1; } //建立当前结点的前驱线索 if ( pre != NULL pre-rightChild == NULL ) { pre-rightChild = current; pre-rightThread = 1; } //建立前驱结点的后继线索 pre = current; //前驱跟上当前指针 InThread ( current-rightChild, pre ); //递归, 右子树线索化 } } template class Type void ThreadTreeType :: CreateInThread ( ) { ThreadNodeType *pre = NULL; //前驱指针 if ( root != NULL ) { //非空二叉树, 线索化 InThread ( root, pre ); //中序遍历线索化二叉树 pre-rightChild = NULL; pre-rightThread = 1; //后处理, 中序最后一个结点 } } 堆 ( Heap ) 树与森林 树的遍历 深度优先遍历 先根次序遍历 后根次序遍历 广度优先遍历 霍夫曼树 (Huffman Tree) 霍夫曼树 带权路径长度达到最小的扩充二叉树即为霍夫曼树。 在霍夫曼树中,权值大的结点离根最近。 //在堆中插入新元素 x if ( CurrentSize == MaxHeapSize ) //堆满 { cerr 堆已满 endl; return 0; } heap[CurrentSize] = x; //插在
您可能关注的文档
- 北京吉利学院汽车工程学院计算机应用课件第6章 网络基本应用.ppt
- 北京交通大学供应链管理课件第八讲 供应链物流管理――网络.ppt
- 北京交通大学供应链管理课件第二讲 供应链管理概述.ppt
- 北京交通大学供应链管理课件第九讲 供应链信息管理.ppt
- 北京交通大学供应链管理课件第六讲 供应链物流管理――运输.ppt
- 北京交通大学供应链管理课件第七讲 供应链物流管理――库存.ppt
- 北京交通大学供应链管理课件第三讲 供应链战略及供应链的构建.ppt
- 北京交通大学供应链管理课件第十讲 供应链管理方法.ppt
- 北京交通大学供应链管理课件第四讲 供应链合作伙伴的选择.ppt
- 北京交通大学供应链管理课件第五讲 供应链业务流程重组.ppt
原创力文档

文档评论(0)