- 问题背景
树是数据结构中很重要的一部分内容,而在实际问题当中二叉树又是最基础的内容,基于此,本文将向读者展示如何创建一颗二叉树和先序遍历,中序遍历和后序遍历二叉树,以及二叉树的遍历的应用。 - 问题要求
4.创建二叉树代码
void creatbtree(pointer&t){
int num;cin>>num;
if(num==0)
t=NULL;
else{
t=new btree;
t->data=num;
creatbtree(t->left);
creatbtree(t->right);
}
}//函数实现创建二叉树
5.二叉树的先序遍历代码!
//先序遍历函数如下:
void preprint(pointer&t){
if(t!=NULL){
cout<<t->data<<" ";
preprint(t->left);
preprint(t->right);
}
}
6.二叉树的中序遍历代码
//中序遍历函数实现如下
void betprint(pointer&t){
if(t!=NULL){
betprint(t->left);
cout<<t->data<<" ";
betprint(t->right);
}
}
7.二叉树的后序遍历代码
//后序遍历函数实现如下
void lasprint(pointer&t){
if(t!=NULL){
lasprint(t->left);
lasprint(t->right);
cout<<t->data<<" ";
}
}
8.求二叉树中的节点总数
//求出二叉树中的节点总数
void sumNode(pointer&t,int&sumnode){
if(t!=NULL){
sumnode++;
sumNode(t->left, sumnode);
sumNode(t->right, sumnode);
}
}
9.求二叉树中的叶子节点总数
//求出二叉树中叶子节点的个数
int blackNode(pointer&t){
if(t==NULL)
return 0;
if(t->left==NULL &&t->right==NULL)
return 1;
return blackNode(t->left)+blackNode(t->right);
}
10.求二叉树的深度(高度)
//求二叉树的深度
int heightTree(pointer&t){
if(t==NULL)
return 0;
else{
int lh=heightTree(t->left);
int rh=heightTree(t->right);
return 1+((lh>rh)?lh:rh);
}
}
11.main方法中代码如下
int main(){
pointer head;
creatbtree(head);//创建二叉树
cout<<endl<<"先序遍历如下";
preprint(head);
cout<<endl<<"中序遍历如下";
betprint(head);
cout<<endl<<"后序遍历如下";
lasprint(head);
int n=0;
sumNode(head,n);
cout<<endl<<"二叉树中的节点总数为:"<<" "<<n;
cout<<endl<<"二叉树中的叶子节点个数为:"<<" "<<blackNode(head);
cout<<endl<<"二叉树的深度为"<<" "<<heightTree(head);
return 0;
}
12.史上最全,望同行们互相学习互相交流,点赞支持。