⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 二叉树的建立与各种方式遍历.cpp

📁 设计目标(问题描述) 用户以二叉树前序的方式输入二叉树的所有结点
💻 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 + -