实验五 树和二叉树实验2

确定一个二叉树,用链式存储结构方法存储

#ifndef BiTree_H
#define BiTree_H

struct BiNode
{
	char data;
	BiNode*lchild,*rchild;
};

class BiTree
{
public:
	BiTree(){root=Creat(root);}
	~BiTree(){Release(root);}
	void PreOrder(){PreOrder(root);}
	void InOrder(){InOrder(root);}
	void PostOrder(){PostOrder(root);}
private:
	BiNode*root;
	BiNode*Creat(BiNode*bt);
	void Release(BiNode*bt);
	void PreOrder(BiNode*bt);
	void InOrder(BiNode*bt);
    void PostOrder(BiNode*bt);
};
#endif
#include<iostream>
using namespace std;
#include"Bitree.h"

BiNode*BiTree::Creat(BiNode*bt) //chuangjianerchash
{
	char ch;
	cout<<"请输入创建一棵二叉树的结点数据"<<endl;
	cin>>ch;
	if(ch=='#')
		return NULL;
	else
	{
		bt=new BiNode;
		bt->data=ch;
		bt->lchild=Creat(bt->lchild);
		bt->rchild=Creat(bt->rchild);
	}
	return bt;
}

void BiTree::Release(BiNode*bt)
{
	if(bt!=NULL)
	{
		Release(bt->lchild);
		Release(bt->rchild);
		delete bt;
	}
}

void BiTree::PreOrder(BiNode*bt)
{
	if(bt==NULL)return;
	else
	{
		cout<<bt->data<<" ";
		PreOrder(bt->lchild);
		PreOrder(bt->rchild);
	}
}

void BiTree::InOrder(BiNode*bt)
{
	if(bt==NULL)return;
	else
	{
		InOrder(bt->lchild);
		cout<<bt->data<<" ";
		InOrder(bt->rchild);
	}
}

void BiTree::PostOrder(BiNode*bt)
{
	if(bt==NULL)return;
	else
	{
		PostOrder(bt->lchild);
		PostOrder(bt->rchild);
		cout<<bt->data<<" ";
	}
}
#include<iostream>
using namespace std;
#include"Bitree.h"

int main()
{
	BiTree T;
	cout<<"前序遍历"<<endl;
	T.PreOrder();
	cout<<endl;
	cout<<"中序遍历"<<endl;
	T.InOrder();
	cout<<endl;
	cout<<"后序遍历"<<endl;
	T.PostOrder();
	cout<<endl;
	return 0;
}

猜你喜欢

转载自blog.csdn.net/nika_jy_L/article/details/80408717
今日推荐