#include<iostream>
using namespace std;
typedef class student
{
public :
student *left;
student *right;
char scores;
}*Btree,tree;
void pre_printlist(Btree L);//前序遍历
int length_tree(Btree L);//求树的高度
void init_tree(Btree &L);//初始化树
void creat_tree(Btree &L);//创造二叉树,前序创造
Btree search_tree(Btree &L,char e);//查找树的节点
int main()
{
char ch;
Btree trees;
init_tree(trees);
creat_tree(trees);
cout<<endl;
pre_printlist(trees);
int lenght=length_tree(trees);
cout<<"这棵树的高度是"<<lenght<<endl;
cout<<"您要查找的节点数据是?"<<endl;
cin>>ch;
Btree p=search_tree(trees,ch);
if(p==NULL)
{
cout<<"查找失败"<<endl;
}
else
{
cout<<"查找成功,这个值是"<<p->scores<<endl;
}
return 0;
}
void init_tree(Btree &L)
{
L=NULL;
}
Btree search_tree(Btree &L,char e)
{
Btree p;
if(L==NULL)
{
return NULL;
}
else if(L->scores==e)
{
return L;
}
else
{
p=search_tree(L->left,e);
if(p!=NULL)//ур╣╫ак
{
return p;
}
else
{
return search_tree(L->right,e);
}
}
}
int length_tree(Btree L)
{
int len1,len2;
if(L==NULL)
{
return 0;
}
else
{
len1=length_tree(L->left);
len2=length_tree(L->right);
}
return len1 > len2 ? (len1+1) : (len2+1);
}
void creat_tree(Btree &L)
{
char ch;
cout<<"请输入一个字符,输入0表示不创建,其他表示创建"<<endl;
cin>>ch;
if(ch=='0')
{
L=NULL;
return ;
}
else
{
L=new tree;
L->scores=ch;
creat_tree(L->left);
creat_tree(L->right);
}
}
void pre_printlist(Btree L)
{
if(L!=NULL)
{
cout<<L->scores<<" ";
pre_printlist(L->left);
pre_printlist(L->right);
}
}
二叉树的创建,遍历,查找,求高度(递归)
最新推荐文章于 2022-02-25 23:41:44 发布