二叉树的建立和三种遍历

#include<bits/stdc++.h>
using namespace std;
typedef struct Tnode{
	int date;
	Tnode *le;
	Tnode *ri;
}*Btree;
void CreatTree(Btree &T){//先序建树 
	int date;
	cin>>date;
	if(date==-1){
		T=NULL;
	}
	else{
		T=(Btree)malloc(sizeof(Tnode));
		T->date=date;
		CreatTree(T->le);
		CreatTree(T->ri); 
	}
}
void preOrde(Btree T) {//先序遍历 ,先中后右再中
	if(T==NULL)	return;
	else {
		cout<<T->date<<' ';
		preOrde(T->le);
		preOrde(T->ri);
	} 
}
void inOrde(Btree T) {//中序遍历,先左后中再右
	if(T==NULL)	return ;
	else {
		inOrde(T->le);
		cout<<T->date<<' ';
		inOrde(T->ri);
	} 
} 
void postOrde(Btree T) {//后序遍历,先左后右再中
	if(T==NULL)	return ;
	else {
		postOrde(T->le);
		postOrde(T->ri);
		cout<<T->date<<' '; 
	}
}
int main(){
	Btree tt;
	CreatTree(tt);//1 2 3 -1 -1 -1 4 5 -1 -1 6 -1 -1
	cout<<"先序遍历 :"; 
	preOrde(tt);
	cout<<endl;
	
	cout<<"中序遍历 :";
	inOrde(tt);
	cout<<endl;
	
	cout<<"后序遍历 :"; 
	postOrde(tt);
	cout<<endl;
	return 0;
} 

二叉树如图所示,运行结果如下

1 2 3 -1 -1 -1 4 5 -1 -1 6 -1 -1
先序遍历 :1 2 3 4 5 6
中序遍历 :3 2 1 5 4 6
后序遍历 :3 2 5 6 4 1

建树遍历题 https://blog.csdn.net/TDD_Master/article/details/83186919

猜你喜欢

转载自blog.csdn.net/TDD_Master/article/details/83186422