树的递归遍历

树的三种遍历:

#include <iostream>

using namespace std;
typedef  int DATA;
struct SNode//定义树的结构体
{
	DATA data;
	SNode *pLeft,*pRight;//左右子树
	SNode (DATA d):data(d){
		pLeft= NULL; 
		pRight= NULL;
	}

};
SNode* g_pRoot = NULL; //定义根
void PreOrder(SNode *p){
	cout<<p->data<<" ";
	if(p->pLeft)
		PreOrder(p->pLeft);
	if(p->pRight)
		PreOrder(p->pRight);
	

}
void InOrder(SNode* p){
	if(p->pLeft){
		InOrder(p->pLeft);
	}
	cout<<p->data<<" ";
	if(p->pRight){
		InOrder(p->pRight);
	} 
	
}
void PostOrder(SNode* p){
	if(p->pLeft){
		PostOrder(p->pLeft);
	}
	if(p->pRight){
		PostOrder(p->pRight);
	}
	cout<<p->data<<" ";
	
}
void input(){
	SNode *p = new SNode(30);
	g_pRoot = p;
	p ->pLeft = new SNode(40);
	p ->pRight = new SNode(50);

	SNode *p1 = p ->pLeft;
	p1 ->pLeft = new SNode(70);
	p1 ->pRight = new SNode(90);

	SNode *p2 = p1 ->pLeft;
	p2 ->pLeft = new SNode(55);

	SNode *p3 = p1->pRight;
	p3 ->pLeft = new SNode(25);

	SNode *p4 = p ->pRight;
	p4 ->pLeft = new SNode(60);
	p4 ->pRight = new SNode(80);

}
int main(){
	input();//引入数据
	PreOrder(g_pRoot);//打印先序
	cout<<endl;
	InOrder(g_pRoot);//中序遍历
	cout<<endl;
	PostOrder(g_pRoot);//后序遍历
	cout<<endl;
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值