在数据结构中.知道树的中序和后序或者前序和中序 如何画树 要讲方法.最好通俗易懂~先给个例子再分析.

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/06 18:12:57

在数据结构中.知道树的中序和后序或者前序和中序 如何画树 要讲方法.最好通俗易懂~先给个例子再分析.
在数据结构中.知道树的中序和后序或者前序和中序 如何画树 要讲方法.
最好通俗易懂~先给个例子再分析.

在数据结构中.知道树的中序和后序或者前序和中序 如何画树 要讲方法.最好通俗易懂~先给个例子再分析.
#include<iostream>
using namespace std;
#include<malloc.h>
#include<stdio.h>
#include<math.h>
#define maxsize 20 //最大结点个数
//#define N 14 //必须输入结点个数(包含虚结点)
#define M 10 //最大深度
typedef struct node{
char data;
int m; //结点的深度
struct node*lchild,*rchild;
}Bitree;
Bitree*Q[maxsize];
Bitree*creatree()
{
char ch;
int front,rear;
// int i=1;
Bitree *T,*s;
T=NULL;
front=1;
rear=0;
cout<<"请输入数据"<<endl;
cin>>ch;
while(ch!='#')
{
// cin>>ch;
s=NULL;
if(ch!='@')
{
s=(Bitree*)malloc(sizeof(Bitree));
s->data =ch;
s->lchild =s->rchild =NULL;
}
rear++;
Q[rear]=s;
if(rear==1)
{
T=s;
T->m=1; //父结点深度为一
}
else{
if(s!=NULL&&Q[front]!=NULL)
if(rear%2==0)
{
Q[front]->lchild =s;
Q[front]->lchild ->m =Q[front]->m+1;
}
else
{
Q[front]->rchild =s;
Q[front]->rchild ->m =Q[front]->m+1;
}
if(rear%2==1)
front++;
}
//i++;
cin>>ch;
}
return T;
}
int countleaf(Bitree* T)
{
if(T==NULL)
return (0);
else if((T->lchild==NULL)&&(T->rchild==NULL))
return (1);
else
return (countleaf(T->lchild)+countleaf(T->rchild));
}
int treedepth(Bitree *T)
{
if(T==NULL)
return (0);
else
{
if(treedepth(T->lchild )>treedepth(T->rchild ))
return(treedepth(T->lchild )+1);
else
return (treedepth(T->rchild )+1);
}
}
void output(Bitree*T) //输出打印二叉数
{
int i;
if(T!=NULL)
{
output(T->rchild ); //右根左遍历二叉数,结果从上到下显示
for(i=1;i<=M;i++)
{
if(i!=T->m)
cout<<" ";
else
cout<<T->data ;
}
cout<<endl;
//cout<<T->data ;
output(T->lchild );
}
}
int menu_select( )
{
int sn;
printf(" 打印二叉树问题\n");
printf("\n");
printf(" 请 选 择0-4:\n");
for( ; ; )
{
scanf( "%d",&sn);
if( sn <0||sn>4)
printf("\n\t输入错误,重选0-4:\n");
else
break;
}
return sn;
}
int main( )
{
Bitree*T;
for(; ;)
{
switch(menu_select())
{
case 1:T=creatree();
printf("\n");
break;
case 2:cout<<"打印结果:"<<endl;
output(T);
printf("\n");
break;
case 3:int i;
i=countleaf(T);
cout<<"所求二叉树叶子结点为"<<i;
cout<<endl;
break;
case 4:int j;
j=treedepth(T);
cout<<"所求二叉树深度为"<<j;
cout<<endl;
break;
case 0:printf("再见");
exit(0);
break;
}
}
return 0;
}
/*void main()
{
Bitree*T;
T=creatree();
cout<<"打印结果:"<<endl;
output(T);
}*/

在数据结构中.知道树的中序和后序或者前序和中序 如何画树 要讲方法.最好通俗易懂~先给个例子再分析. 数据结构C递归的方法 前序 中序 后序 交换二叉树每个结点的左孩子和右孩子 结点个数 深度 叶结点个数必定奉上金币! 求解下面一道数据结构题,已知序列 18,11,17,7,5,13,41,29,37,23,19.请画出相应的二叉排序树并写出该树的前序、中序和后序序列. 数据结构与算法,二叉树,已知前序和中序,求后序,程序怎么设计用C语言 数据结构与算法5请给出下图所示的树的前序、后序和层次遍历序列 数据结构试验(用C语言)建立一棵二叉树,并用递归或者非递归的算法分别用先序.中序和后序遍历、谢谢能附一点实验思路更好 画出和下列已知序列对应的树T 先序ABCDEFGHIJKL中序CBEFDGAJIKLHc语言 数据结构 数据结构中树的层数和深度有什么区别? 写出下列二叉树的前序序列、中序序列和后序序列. 数据结构中,树的度是什么? 数据结构中树的结构怎么理解 在数据结构中' '是什么意思 孩子如何区分前鼻音和后鼻音在发音中我不知道如何教孩子区分前鼻音和后鼻音,因为我的发音不准. 数据结构题 先序序列是ABDEHIKLCFG,中序序列为DBHEKILAFCG.画出此二叉树. 数据结构和抽象数据结构的概念与程序设计语言中数据类型概念的区别 数据结构中算法的定义? 数据结构中堆的作用 请求根据二叉树的中序序列和后序序列或者根据先序和中序画出对应二叉树的解题方法