1. 程式人生 > >實驗五 樹和二叉樹實驗2

實驗五 樹和二叉樹實驗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;
}