用汇编实现二叉树的先序,中序,后序遍历

如题所述

#includenbsp;“iostream.h“#includenbsp;“stdlib.h“#includenbsp;“stdio.h“typedefnbsp;charnbsp;ElemType;//定义二叉树结点值的类型为字符型constnbsp;intnbsp;MaxLength=10;//结点个数不超过10个typedefnbsp;structnbsp;BTNode{ElemTypenbsp;data;structnbsp;BTNodenbsp;*lchild,*rchild;}BTNode,*nbsp;BiTree;voidnbsp;CreateBiTree(BiTreenbsp;amp;T){//按先序次序输入,构造二叉链表表示的二叉树T,空格表示空树//nbsp;if(T)nbsp;return;charnbsp;ch;ch=getchar();nbsp;//不能用cin来输入,在cin中不能识别空格。if(ch==‘nbsp;‘)nbsp;T=NULL;else{if(!(T=(BTNodenbsp;*)malloc(sizeof(BTNode))))nbsp;coutamp;lt;amp;lt;“mallocnbsp;fail!“;T-amp;gt;data=ch;CreateBiTree(T-amp;gt;lchild);CreateBiTree(T-amp;gt;rchild);}}voidnbsp;PreOrderTraverse(BiTreenbsp;T){//先序遍历if(T){coutamp;lt;amp;lt;T-amp;gt;dataamp;lt;amp;lt;‘nbsp;‘;PreOrderTraverse(T-amp;gt;lchild);PreOrderTraverse(T-amp;gt;rchild);}}voidnbsp;InOrderTraverse(BiTreenbsp;T){//中序遍历if(T){InOrderTraverse(T-amp;gt;lchild);coutamp;lt;amp;lt;T-amp;gt;dataamp;lt;amp;lt;‘nbsp;‘;InOrderTraverse(T-amp;gt;rchild);}}voidnbsp;PostOrderTraverse(BiTreenbsp;T){//后序遍历if(T){PostOrderTraverse(T-amp;gt;lchild);PostOrderTraverse(T-amp;gt;rchild);coutamp;lt;amp;lt;T-amp;gt;dataamp;lt;amp;lt;‘nbsp;‘;}}voidnbsp;LevelOrderTraverse(BiTreenbsp;T){//层序遍历BiTreenbsp;Q[MaxLength];intnbsp;front=0,rear=0;BiTreenbsp;p;if(T){nbsp;//根结点入队Q[rear]=T;rear=(rear+1)%MaxLength;}while(front!=rear){p=Q[front];nbsp;//队头元素出队front=(front+1)%MaxLength;coutamp;lt;amp;lt;p-amp;gt;dataamp;lt;amp;lt;‘nbsp;‘;if(p-amp;gt;lchild){nbsp;//左孩子不为空,入队Q[rear]=p-amp;gt;lchild;rear=(rear+1)%MaxLength;}if(p-amp;gt;rchild){nbsp;//右孩子不为空,入队Q[rear]=p-amp;gt;rchild;rear=(rear+1)%MaxLength;}}}//非递归的先序遍历算法voidnbsp;NRPreOrder(BiTreenbsp;bt){nbsp;BiTreenbsp;stack[MaxLength],p;intnbsp;top;ifnbsp;(bt!=NULL){top=0;p=bt;while(p!=NULL||topamp;gt;0){nbsp;while(p!=NULL){coutamp;lt;amp;lt;p-amp;gt;data;stack[top]=p;top++;p=p-amp;gt;lchild;}ifnbsp;(topamp;gt;0){nbsp;top--;nbsp;p=stack[top];nbsp;p=p-amp;gt;rchild;nbsp;}}}}//非递归的中序遍历算法voidnbsp;NRInOrder(BiTreenbsp;bt){nbsp;BiTreenbsp;stack[MaxLength],p;intnbsp;top;ifnbsp;(bt!=NULL){top=0;p=bt;while(p!=NULL||topamp;gt;0){nbsp;while(p!=NUL
温馨提示:内容为网友见解,仅供参考
无其他回答

用汇编实现二叉树的先序,中序,后序遍历
}BTNode,* BiTree;void CreateBiTree(BiTree &T){\/\/按先序次序输入,构造二叉链表表示的二叉树T,空格表示空树 \/\/ if(T) return;char ch;ch=getchar(); \/\/不能用cin来输入,在cin中不能识别空格。if(ch==' ') T=NULL;else{ if(!(T=(BTNode *)malloc(sizeof(BTNode))) cout<<"m...

建立二叉树,层序、先序、中序、后序遍历( 用递归或非递归的方法都需要...
Preorder(T->lchild); \/\/先序遍历左子树 Preorder(T->rchild); \/\/先序遍历右子树 } } \/\/===LNR 中序遍历=== void Inorder(BinTree T){ if(T) { Inorder(T->lchild); \/\/中序遍历左子树 printf("%c",T->data); \/\/访问结点 Inorder(T->rchild); \/\/中序遍历...

编写程序,用先序递归遍历法建立二叉树的二叉链表存储结构,输出其先序...
include "stdio.h"include "malloc.h"define ELEMTYPE char BiTNode *bulid() \/*建树*\/ { BiTNode *q;BiTNode *s[20];int i,j;char x;printf("请按顺序输入二叉树的结点以输入0和*号结束\\n");printf("请输入要输入的为第几个结点i=\\n");scanf("%d",&i);printf("请输入你要输入该结...

二叉树的中序、前序、后序的递归、非递归遍历算法,层次序的非递归遍历...
struct node* lchild,*rchild;}bintnode;typedef bintnode *bintree;bintree root;\/\/指向二叉树结点指针 \/\/下面是些栈的操作 为非递归实现做准备 typedef struct stack\/\/栈结构定义 { bintree data[100];\/\/data元素类型为指针 int tag[100];\/\/为栈中元素做的标记,,用于后续遍历 int top;\/...

...建立二叉树的存储结构,先序、中序、后序遍历二叉树(要求任选某一种...
后序遍历二叉树(要求任选某一种用非递归算法完成); 3、查询二叉树中指定结点;

一棵二叉树的先序遍历序列为ABCDEF,中序遍历序列为CBAEDF,则后序遍历...
先序列号为这个,那么在编辑的时候,可以先进行用顺序的方式,然后再进行。后序序列是CBA。根据前序,可以确定A为根,A在中序中的位置,可以确定CB为A的左子树上的结点,没有右子树。确定A之后,再看中序第二值为B,查看B在中序中的位置,C在B左边,确定C为B的左子树。

...完成二叉树的建立,先序中序后序遍历的操作,求所有叶子结点总数_百度...
Tree;printf("input 根节点: ");create(&Tree);printf("先序遍历:");print1(Tree);printf("中序遍历");print2(Tree);printf("后序遍历");print3(Tree);printf("\\n深 度:%d \\n",depth(Tree));printf("总结点数:%d \\n",Cnode(Tree));printf("叶子结点数:%d\\n",leaf);} ...

一颗二叉树的先序遍历结果和中序遍历结果分别是ABDECFG、DBEAFGC...
先序遍历中的第一个字母A就是二叉树的根结点,A,在中序遍历中找到A,他的左侧有三个字母DBE就是它的左子树的中序遍历,然后再先序便利中同样找到A后面的三个字母BDE,就是根结点的左子树的先序遍历。用同样的方法找出根结点的右子树的前序遍历和中序遍历,然后递归使用前面的方法就可以画出整个...

在二叉树结点的先序序列、中序序列和后序序列中,所有叶子结点的先后顺序...
先序遍历的顺序是根节点-左子树-右子树,中序遍历的顺序是左子树-根节点-右子树,后序遍历的顺序是左子树-右子树-根节点。虽然这三种遍历方式的顺序有所不同,但叶子节点的顺序在所有遍历方式中都是一致的。这个性质对于二叉树的遍历和操作非常重要,因为它允许我们在不依赖于遍历方式的情况下,对叶子...

...其节点的先序遍历序列,中序遍历序列,后序遍历序列中的一部分如下...
由后序序列得 根节点:a 又由中序得a的左子树有d…kfi 那么此时我们就遇到个问题就是少了一个节点,此时我们看先序的第二个节点是b他肯定是a的左孩子,则此时a的左子树,全了:dbkfi a的左子树的根那就很明显了,是:b则左面的图就很好画了……此时我们可以用同样的方法去找右面的...

相似回答