求严蔚敏线索二叉树中的先序和后序线索化程序

这是中序线索程序
void InThreading (BiThrTree p,BiThrTree &pre){
//对以根指针p所指二叉树进行中序遍历,在遍历过程中进行线索化
//p为当前指针,pre为跟随指针,比p慢一拍遍历整个二叉树
if (p){
InThreading(p->lchild,pre);
pre->succ=p; p->pred=pre;
pre=p;
InThreading(p->rchild,pre);
}
}

求大神告知怎样先序或者后续线索

第1个回答  2013-09-27
给你个递归的吧/*2013年3月21日 17:37:19目的:实现"静态"链式二叉表的操作(此处的静态是指已知二叉树的结构)*/#include <stdio.h>#include <malloc.h>typedef struct TreeNode {int Data;    struct TreeNode * pLchild;struct TreeNode * pRchild;}TNq *pTN;pTN CreatTree(void);void PreTraverse(pTN);/*先序编历*/void InTraverse(pTN);/*中序遍历*/void PostTraverse(pTN);/*后序遍历*/int main(void){pTN Root;Root = CreatTree();PreTraverse(Root);puts("\n");    InTraverse(Root);puts("\n");PostTraverse(Root);puts("\n");return 0;}pTN CreatTree(void){    pTN A = (pTN)malloc(sizeof(TN));pTN B = (pTN)malloc(sizeof(TN));pTN C = (pTN)malloc(sizeof(TN));    pTN D = (pTN)malloc(sizeof(TN));    pTN E = (pTN)malloc(sizeof(TN));pTN F = (pTN)malloc(sizeof(TN));A->Data = 'A';B->Data = 'B';C->Data = 'C';D->Data = 'D';E->Data = 'E';F->Data = 'F';A->pLchild = B;B->pLchild = D;B->pRchild = E;D->pLchild = D->pRchild = NULL;E->pLchild = E->pRchild = NULL;A->pRchild = C;C->pLchild = NULL;C->pRchild = F;F->pLchild = F->pRchild = NULL;return A;}void PreTraverse(pTN Root){ if (NULL != Root){printf("%c "9 Root->Data);}if (NULL != Root->pLchild){PreTraverse(Root->pLchild);}if (NULL != Root->pRchild){PreTraverse(Root->pRchild);}return;}void InTraverse(pTN Root){if (NULL != Root->p......余下全文>>追问

大哥,麻烦你按照我所给格式的内容来吧!!你这样的话我看不懂!!!

本回答被提问者采纳

如何实现二叉树的线索化
先序遍历线索二叉树:首先进行先序遍历,然后把得到的节点依次入队;然后把队列里除了根节点以外的节点依次根据标记,队里首节点Ltag=0,如果Ltag=1,左指针指向队里前一个元素,如果Rtag=1,右指针指向队里后一个元素。中序遍历线索二叉树:首先进行中序遍历,然后把得到的节点依次入队 然后把队列里除...

二叉树线索化的思想是什么?
线索二叉树就是 使用的对象:树节点中没有使用的n-1个空指针(n个树节点,空指针永远都是n+1个,自己推下)。运行的原则:某种深度遍历顺序——先序,中序,后序 过程:按照中序(当然也可以是其他的遍历)的前驱后继关系,若p的左子树为空,则左子树指向p的中序前驱,若p的右子树为空,则p...

严蔚敏数据结构应该怎么学习。
1.将两个有序表合并为一个表,这个算法的变种很多,可以是链表,顺序表。涉及集合运算,归并排序,字符串处理。2.将一个顺序表的元素重新划分,左边的较小,右边较大。涉及快速排序,求字符串的逆串。(树形若干个)注意:有些可以实现,有些实现不了,可以拿来思考。3.前序线索化,递归实现,栈模...

严蔚敏版的数据结构(C语言版)的线索二叉树的一个问题拜托各位了 3Q_百 ...
它表示左右标志,当tag==link时它表示结点指向左孩子或右孩子,当tag==thread时表示结点指向前驱或后继结点。link与thread是枚举型中定义的,如:typedef enum{link,thread} Ptag;在结构体里面定义 typedef struct{ int data;struct *lchild,*rchild;Ptag ltag,rtag;} 这样当ltag==link时,它就表示结...

c语言中序线索化二叉树的函数参数有这样一段代码BiThrTree &Thrt,这 ...
你的那个代码从风格上看应该是严蔚敏书里的。需要注意的是,那本书里的代码采用的是类C语言,并不能直接拿来就用,而是要根据需要和环境进行一定的修改。里面的&是借鉴了C++里的引用的概念,是想说在函数中的改变会作用到Thrt变量自身,而不是作用到那个变量的一个副本上。如果用C语言,可以改为指针...

两个二叉树遍历选择题
当然题目才告诉我二叉树,我还分不出哪个方法最优,哥觉得题目比较扯蛋,关键还是楼主你自己要理解做法,多动脑筋而别去迷信题目答案。第二个题目,只有中序遍历线索可以找到直接前驱和直接后继,这也是线索化的目的所在,但是前序线索化无法仅通过线索找到直接前驱,后序线索化无法通过仅通过线索找到直接后...

线索二叉树的线索数是指什么?
若二叉树有n个节点,则有n-1条边,占掉了n-1个指针域。剩下的2n-(n-1)=n+1个指针域(包括空指针)就是线索数。在二叉树的结点上加上线索的二叉树称为线索二叉树,对二叉树以某种遍历方式(如先序、中序、后序或层次等)进行遍历,使其变为线索二叉树的过程称为对二叉树进行线索化。

有没有数据结构(C语言版)的资料
二叉树的概念、性质和存储结构,二叉树遍历的三种算法(递归与非递归),在三种基本遍历算法的基础上实现二叉树的其它算法,线索二叉树的概念和线索化算法以及线索化后的查找算法,最优二叉树的概念、构成和应用,树的概念和存储形式,树与森林的遍历算法及其与二叉树遍历算法的联系,树与森林和二叉树的转换。下面我们来看...

数据结构的问题~
2、给定二叉树的先序序列和中序序列,能否重构出该二叉树?给定二叉树的先序序列和后序序列呢?若不能,给出反例。 3、一棵深度为h的满二叉树具有如下性质:第h层上的结点都是叶结点,其余各层上每个结点都有m棵非空子树。若按层次从上到下,每层从左到右的顺序从1开始对全部结点编号,试计算: (1)第k层结点...

已知先序中序求后序的算法:
首先看先序(根左右),说明A是根,再看中序(左根右),说明A之前的(DBMGNE)都是A的左边,A之后的(CHF)都在A的右边。在看先序的BDEGMN 同样是根左右,B就是A的左子节点,再看中序的DBMGNE,同样是左根右,D就是B的左孩子(而且左边也只有这一个)。。。继续看先序的EGMN,同样是根...

相似回答