📄 二叉树的建立与各种方式遍历.cpp
字号:
#include<iostream.h>
struct node
{
char data;
node *lchild,*rchild;
};
class bitree
{
public:
bitree();
~bitree();
void preorder(node *root);//前
void inorder(node *root);//中
void postorder(node *root);//后
void levelorder(node *root);//层
node *creat();
void release(node *root);
node *getroot();
private:
node *root,*root1;
};
bitree::bitree()
{
this->root=creat();
}
void bitree::preorder(node *root)
{
if(root==NULL) return;
else
{
cout<<root->data;
preorder(root->lchild);
preorder(root->rchild);
}
}
void bitree::inorder(node *root)
{
if(root==NULL) return;
else
{
inorder(root->lchild);
cout<<root->data;
inorder(root->rchild);
}
}
void bitree::postorder(node *root)
{
if(root==NULL) return;
else
{
postorder(root->lchild);
postorder(root->rchild);
cout<<root->data;
}
}
void bitree::levelorder(node *root)
{
node *queen[100];
int front=0;
int rear=0;
if(root==NULL)
return;
queen[++rear]=root;
node *p;
while(front!=rear)
{
p=queen[++front];
cout<<p->data;
if(p->lchild!=NULL)
queen[++rear]=p->lchild;
if(p->rchild!=NULL)
queen[++rear]=p->rchild;
}
}
node *bitree::creat()
{
node *root1;
cout<<"请输入一个数:";
char ch;
cin>>ch;
cout<<""<<endl;
if(ch=='#')
root1=NULL;
else
{
root1=new node;
root1->data=ch;
root1->lchild=creat();
root1->rchild=creat();
}
return root1;
}
bitree::~bitree()
{
release(root);
}
void bitree::release(node *root)
{
if(root!=NULL)
{
release(root->lchild);
release(root->rchild);
delete root;
}
}
node *bitree::getroot()
{
return root;
}
void main()
{ cout<<"建立一个二叉树:\n"<<endl;
bitree li;
node *root=li.getroot();
cout<<"前序遍历:";
li.preorder(root);
cout<<"\n中序遍历:";
li.inorder(root);
cout<<"\n后序遍历:";
li.postorder(root);
cout<<"\n层序遍历:";
li.levelorder(root);
cout<<endl;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -