1. 遍历到一个结点时,如果它有左孩子,就递归进入左子树。 2. 如果它有右孩子,就递归进入右子树。 3. 如果它没有左孩子,则将左指针线索化为前驱结点。 4. 如果它没有右孩子,则将右指针线索化为后继结点。 5. 最后一个遍历到的结点,将它的右指针线索化为后继结点(默认为空)。 具体实现时,可以用一个全...
与中序构建线索二叉树的代码基本相同,把对当前结点的操作放到了遍历左右子树之后。 void PostThread(Tree& t, TreeNode* &pre){ //pre指针指向t的中序前驱,在主函数中预设为NULL if(t != NULL){ PostThread(t->left, pre); //左子树线索化 PostThread(t->right, pre); //右子树线索化 if(t->left...
对于给定的二叉树,其后序线索树如下所示: B / \ D F / \ \ G H E \ C \ A (3) 将这棵二叉树转换成对应的树(或森林)可以进行如下的操作:根据根结点A,可以构建一棵树,该树的根结点为A,左子树为B-D-F,右子树为C-E-G-H。所以,转换后的树为: A / \ B C / \ /...
对这棵二叉树完成后序线索化之后,我们在对其进行遍历时,我们知道后序遍历的顺序是:左右根,那对于上图的后序遍历结果是:HIDEBFGCA。 遍历后序线索化二叉树的思路:由于是后序线索化,那么后序遍历的开始节点一定是最左子节点,从根节点出发找到最左子节点,如何判断是否是最左子节点呢?如果是最左子节点,则其left指...
1.后序线索化二叉树(用三叉链表存储结构、有头结点) voidpostThreading(TriTree p){if(p){ postThreading(p->lChild); postThreading(p->rChild);if(!p->lChild){ p->lTag=1; p->lChild=pre; }if(!pre->rChild){ pre->rTag=1; pre->rChild=p; ...
[解析]线索二叉树利用二叉链表的空链域来存放结点的前驱和后继信息, 解题思路较简单。 题中所给二叉树的后序序列为dbca。结点d无前驱和左子树,左链域空,无右子树,右链域指 向其后继结点b;结点b无左子树,左链域指向其前驱结点 d;结点c无左子树,左链域指向其 前驱结点b,无右子树,右链域指向其后继结点 ...
设一棵后序线索树的高是50,结点x是树中的一个结点,其双亲是结点y,y的右子树高度是3l,x是y的左孩子。则确定x的后继最多需经过___中间结点(不含后继及x本身)。[南京理工大学2000二、8(1.5分)] ___ 相关知识点: 试题来源: 解析 正确答案:(正确答案:31(x的后继是经x的双亲y的右子树中最左下的...
设一棵二叉树如图所示。请解答下面的问题:(1) 写出先序序列、中序序列和后序序列;(2)画出该二叉树的中序线索二叉树;(3)画出该二叉树对应的树或者森林。相关知识点: 试题来源: 解析 (1) 二叉树如图1所示。 (2) 后序线索树如图2所示。 (3) 这棵二叉树转换成对应的森林如图3所示。
Status PostOrderThreading(BiThrTree& T,BiThrTree& pre);//首先建立后序线索树 Status FindNextInBiThrTree(BiThrTree& q,TElemType *p);//再进行查找 // 后序线索二叉树的算法 Status PostOrderThreading(BiThrTree& Thrt,BiThrTree& T){ BiThrTree pre; ...
应用题(2)设一棵二叉树的先序序列: A B D F C E G H ,中序序列: B F D A G E H C画出这棵二叉树。画出这棵二叉树的后序线索树。将这棵二叉树转换成对应的树(或森林)。 相关知识点: 试题来源: 解析 答案: (3) 假设用于通信的电文仅由8个字母组成,字母在电文中出现的频率分别为0.07,...