📄 二叉树.cpp
字号:
#include<iostream.h>
typedef char elemtype;
struct bitree
{
elemtype data;
bitree*lchild,*rchild;
};
bitree *create()
{
bitree *root,*s,*q[100];
int front=1,rear=0;
char ch;
root=NULL;
cout<<"请输入结点值(‘ , ’为虚结点,‘ # ’结束):"<<endl;
cin>>ch;
while(ch!='#')
{
s=NULL;
if(ch!=',')
{
s=new bitree;
s->data=ch;
s->lchild=NULL;
s->rchild=NULL;
}
rear++;
q[rear]=s;
if(rear==1) root=s;
else
{
if((s!=NULL)&&(q[front]!=NULL))
{
if(rear%2==0) q[front]->lchild=s;
else q[front]->rchild=s;
}
if(rear%2==1)
front++;
}
cin>>ch;
}
return root;
}
void inorder(bitree*root)
{
bitree*p;
p=root;
if(p!=NULL)
{
inorder(p->lchild);
cout<<p->data<<" ";
inorder(p->rchild);
}
}
int leaf(bitree*root)
{
bitree*l;
l=root;
if (l==NULL) return 0;
else if (l->lchild==NULL&&l->rchild==NULL) return 1;
else return leaf(l->lchild)+leaf(l->rchild);
}
void drawbintree(bitree*subtree,int a)//画出此二叉树
{
a++;//a为层次数
if(subtree)
{
cout<<subtree->data<<endl;
if(subtree->lchild)
{
for(int i=0;i<=a;i++)
cout<<'\t';
drawbintree(subtree->lchild,a);
}
if(subtree->rchild)
{
for(int i=0;i<=a;i++)
cout<<'\t';
drawbintree(subtree->rchild,a);
}
}
}
void main()
{
bitree*root;
root=create();
cout<<"中序遍历的结果为:"<<endl;
inorder(root);
cout<<endl;
cout<<"叶结点数为 :";
cout<<leaf(root);
cout<<endl;
drawbintree(root,-1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -