与中序构建线索二叉树的代码基本相同,把对当前结点的操作放到了遍历左右子树之后。 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 / \ /...
1. 遍历到一个结点时,如果它有左孩子,就递归进入左子树。 2. 如果它有右孩子,就递归进入右子树。 3. 如果它没有左孩子,则将左指针线索化为前驱结点。 4. 如果它没有右孩子,则将右指针线索化为后继结点。 5. 最后一个遍历到的结点,将它的右指针线索化为后继结点(默认为空)。 具体实现时,可以用一个全...
2.遍历后序线索二叉树 voidpostTraverseTriTree(TriTree head){ TriTree p=head->lChild;inttag=0;while(p->parent!=NULL){while(p->lTag==0&&tag==0){p=p->lChild;}if(p->rTag==1){//结点无右孩子,可以顺着线索访问后继visit(p->data);while(p->rTag==1&&p->rChild->parent!=NULL){ p=p...
对这棵二叉树完成后序线索化之后,我们在对其进行遍历时,我们知道后序遍历的顺序是:左右根,那对于上图的后序遍历结果是:HIDEBFGCA。 遍历后序线索化二叉树的思路:由于是后序线索化,那么后序遍历的开始节点一定是最左子节点,从根节点出发找到最左子节点,如何判断是否是最左子节点呢?如果是最左子节点,则其left指...
设一棵后序线索树的高是50,结点x是树中的一个结点,其双亲是结点y,y的右子树高度是3l,x是y的左孩子。则确定x的后继最多需经过___中间结点(不含后继及x本身)。[南京理工大学2000二、8(1.5分)] ___ 相关知识点: 试题来源: 解析 正确答案:(正确答案:31(x的后继是经x的双亲y的右子树中最左下的...
[解析]线索二叉树利用二叉链表的空链域来存放结点的前驱和后继信息, 解题思路较简单。 题中所给二叉树的后序序列为dbca。结点d无前驱和左子树,左链域空,无右子树,右链域指 向其后继结点b;结点b无左子树,左链域指向其前驱结点 d;结点c无左子树,左链域指向其 前驱结点b,无右子树,右链域指向其后继结点 ...
设一棵二叉树如图所示。请解答下面的问题:(1) 写出先序序列、中序序列和后序序列;(2)画出该二叉树的中序线索二叉树;(3)画出该二叉树对应的树或者森林。相关知识点: 试题来源: 解析 (1) 二叉树如图1所示。 (2) 后序线索树如图2所示。 (3) 这棵二叉树转换成对应的森林如图3所示。
先画出遍历序列,后根据遍历序列例如ABC,看A的右子树是否为空,如果为空,则指向B,再看B,如果B的左子树为空,则指向A,依次类推,均符合这个规律。求后序线索二叉树中结点的后继要知道其双亲的信息,要使用栈,所以说后序线索二叉树是不完善的。
设一棵后序线索树的高度是50结点x是树中的一个结点,其双亲是结点yy的右子树高度是31,x是y的左孩子,则确定x的后继最多需经过中间结点(不含后继及X本身