1楼:甙邪
利用遍历后继结点输出线索化的二叉树
如下://在中序线索二叉树中确定x所指结点版的权直接后继结点
//1.当x->rbit=0时,x->rchild指出的结点就是x的直接后继结点
//2.当x->rbit=1时,沿着x结点右子树的根的左指针链往下找,直到某结点的lchild域为线索
tbtree insucc(tbtree x)//利用线索二叉树遍历二叉树
void tinorder(tbtree head)printf("\n");}
线索二叉树的线索二叉树结构
2楼:血刺裁决
二叉树的遍历本复质上是将一个复
制杂的非线性结构
bai转换为线性结构,使每个结du点都有了唯一前驱zhi和后继(第一个结dao点无前驱,最后一个结点无后继)。对于二叉树的一个结点,查找其左右子女是方便的,其前驱后继只有在遍历中得到。为了容易找到前驱和后继,有两种方法。
一是在结点结构中增加向前和向后的指针fwd和bkd,这种方法增加了存储开销,不可取;二是利用二叉树的空链指针。现将二叉树的结点结构重新定义如下: lchild ltag data rtag rchild 其中:
ltag=0 时lchild指向左子女;
ltag=1 时lchild指向前驱;
rtag=0 时rchild指向右子女;
rtag=1 时rchild指向后继;
数据结构线索化二叉树
3楼:匿名用户
1、t为二叉树的根结点
2、pre指针初始化,让其指向线索二叉树的头结点,作用是使得对二叉树的最“左”结点的处理与对其它结点的线索化处理的方法一致。
3、是这样的,对p结点的左子树进行线索化
4、如果当前结点(即p指向的结点)没有左孩子,那么让左孩子指针指向pre所指的结点。
5、让pre指向当前结点,那么它不就是下一个结点的前趋结点了嘛6、综上pre指针始终指向p所指向的当前结点前趋结点。
总体上使用的递归思想,即对整颗树先对其左子树遍历,然后对当前结点线索化,最后对右子树递归遍历。
c++怎么创建数据结构中的二叉树? 还有二叉树怎么线索化??
4楼:曉凡
这个东西bai建议你去看看数据du结构中的二叉树。zhi在c++的daostl(基础类库)里是有提供直接创内建二叉树的库文容件的。你直接调用就好了。
线索化也分为前序,中序,后序三种(与遍历顺序相同),二叉树的线索化用如下方法:
每个结点有五个部分:leftflag , leftchild, data , rightchild , rightflag.
当flag为1时,child指向的是儿子结点,如果flag为0,则child指向以你的遍历顺序为定的结点。左儿子指向前一个,右儿子指向下一个。
5楼:匿名用户
你这个表示式是 二叉树的中序周游的结果,那么 就按照中序的方法去建立专一颗树,属 你仔细回想一下中序周游的过程,然后用它的逆过程就行了。。。
不过这里涉及到优先级的问题。。所以建立的过程 还是要使用到2个栈和运算符优先级。
过程和站的应用的计算器是一样的。。
过程:::
1.先把他们都转化成节点。建立一个操作数栈,一个运算符栈 栈里面存的都是节点的“地址” ....
2.然后按照计算器一样,弹出操作符的时候就他 操作数栈里的两个操作数做为 left 和 right 连接到 操作符。
3.操作符 出栈 并记录下来,两个操作数 也出栈, 把那个弹出的操作符压入操作数栈里面去。。。
4. 重复此过程 ,直到 操作符栈为空的时候 。 把操作数栈里剩下的节点赋值给二叉树的 root 。 就ok了。。。
ps: 想要输出的话 是中序周游,不过括号的问题很难弄,除非全部加括号输出。 最好是用后序的。。。
over
我自己打的字 分分啊~~~
严蔚敏版的数据结构(c语言版)的线索二叉树的一个问题拜托各位了 3q
6楼:花落樱
它表示左右标志,当tag==link时它表示结点指向左孩子或右孩子,当tag==thread时表示结点指向前驱或后继版结点。link与thread是枚权举型中定义的,如:typedef enum ptag;在结构体里面定义 typedef struct 这样当ltag==link时,它就表示结点指向左孩子,ltag==thread时,它就表示指向前驱结点
如图,数据结构问题,这个二叉树怎么转化为森林
1楼 旧同桌的你 记住左孩子右兄弟,a的左子树b是它的一个节点,b的右子树c是b的兄弟,同时也是a的一个节点,所以在a这棵树上有b和c两个节点 a的右子树有d,d的右子树有g,所以a d g三者互为兄弟,也就是有a d g这三棵树 d有一个左子树e,e有一个右子树f,所以e和f为d树下的两个节点 如...
数据结构:由结点可以构造出多少种不同的二叉树
1楼 綉乞群群 递归算法 typedef strct node bitree int depth bitree bt 2楼 匿名用户 节点不同就不止5种,节点一样就有5种 由3 个结点可以构造出多少种不同的二叉树 3楼 匿名用户 30种。三个不同的结点可以构成30种不同的二叉树。 其中树的形态有5种...
这个题怎样做,数据结构将下列树转化为二叉树,怎么做
1楼 匿名用户 二叉树的根结点和左子树作为森林的第一棵树,剩下的按同样的方法卸下根结点和左子树作为第二颗树,以此类推 所以转换后的森林是 2楼 我是逗比 声明一个结构体,代表一个节点 struct node 其中symbol就是a b c那些字母,left是指向左边孩子结点的指针,right是右边的...