C++数据结构 编程使用顺序存储方法保存下图中的树并按“根左右”的顺序输出结点,下标值为-1表示没有孩子 50
voidprint(intm){cout<<""<<data[m].name<<endl;if(data[m].L!=-1)print(data[m].L);if(dat...
void print(int m)
{
cout<<" "<<data[m].name<<endl;
if(data[m].L!=-1)
print(data[m].L);
if(data[m].R!=-1)
print(data[m].R);
望各路大神帮小弟讲解一下这个print()是什么意思好吗... 展开
{
cout<<" "<<data[m].name<<endl;
if(data[m].L!=-1)
print(data[m].L);
if(data[m].R!=-1)
print(data[m].R);
望各路大神帮小弟讲解一下这个print()是什么意思好吗... 展开
1个回答
展开全部
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2
typedef int Status;
typedef char elemtype;
typedef struct BiTNode{
elemtype data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
//构造二叉树
Status CreateBiTree(BiTree &T){
elemtype ch;
ch=getchar();
if(ch==' '){T=NULL;}
else{
if(!(T=(BiTNode *)malloc(sizeof(BiTNode))))
return FALSE;
T->data=ch;
CreateBiTree(T->lchild);
CreateBiTree(T->rchild);
}
return OK;
}
// 先序遍历
void PreOrderTraverse(BiTree T){
if(T!=NULL){
printf("%c ",T->data);
PreOrderTraverse(T->lchild);
PreOrderTraverse(T->rchild);
}
}
//叶子节点的个数
Status Leafnumber(BiTree T){
int num1=0,num2=0;
if(T==NULL)
return 0;
else if (T->lchild==NULL&&T->rchild==NULL) return 1;
else
{
num1=Leafnumber(T->lchild);
num2=Leafnumber(T->rchild);
return(num1+num2);
}
}
//树的深度
Status DepthTree(BiTree T){
int llength=0,rlength=0;
if(T==NULL) return 0;
else{
llength=DepthTree(T->lchild);
rlength=DepthTree(T->rchild);
return(llength>rlength)?(llength+1):(rlength+1);
}
}
void main()
{
BiTree s;
printf("输入字符串,使用空格代表空\n");
CreateBiTree(s);
printf("先序输出:\n");
PreOrderTraverse(s);
printf("\n树的深度:%d\n",DepthTree(s));
getch();
}
#include<stdlib.h>
#include<conio.h>
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2
typedef int Status;
typedef char elemtype;
typedef struct BiTNode{
elemtype data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
//构造二叉树
Status CreateBiTree(BiTree &T){
elemtype ch;
ch=getchar();
if(ch==' '){T=NULL;}
else{
if(!(T=(BiTNode *)malloc(sizeof(BiTNode))))
return FALSE;
T->data=ch;
CreateBiTree(T->lchild);
CreateBiTree(T->rchild);
}
return OK;
}
// 先序遍历
void PreOrderTraverse(BiTree T){
if(T!=NULL){
printf("%c ",T->data);
PreOrderTraverse(T->lchild);
PreOrderTraverse(T->rchild);
}
}
//叶子节点的个数
Status Leafnumber(BiTree T){
int num1=0,num2=0;
if(T==NULL)
return 0;
else if (T->lchild==NULL&&T->rchild==NULL) return 1;
else
{
num1=Leafnumber(T->lchild);
num2=Leafnumber(T->rchild);
return(num1+num2);
}
}
//树的深度
Status DepthTree(BiTree T){
int llength=0,rlength=0;
if(T==NULL) return 0;
else{
llength=DepthTree(T->lchild);
rlength=DepthTree(T->rchild);
return(llength>rlength)?(llength+1):(rlength+1);
}
}
void main()
{
BiTree s;
printf("输入字符串,使用空格代表空\n");
CreateBiTree(s);
printf("先序输出:\n");
PreOrderTraverse(s);
printf("\n树的深度:%d\n",DepthTree(s));
getch();
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询