一般的树

子结点个数没有限制并且没有先后次序

struct node{
	int data;
	vector<int>child;
}Node[maxn];

先根遍历

void preorder(int root){
	printf("%d",Node[root].data);
	for(int i=0;i<child.size();i++){
		preorder(Node[root].child[i]);
	}
}

层序遍历

 void levelorder(int root){
 	queue<int>qu;
 	qu.push(root);
 	int node;
 	while(qu.empty()!=true){
 		node = qu.front();
 		qu.pop();
 		printf("%d",Node[node].data);
 		for(int i=0;i<Node[node].child.size();i++){
 			qu.push(Node[node].child[i]);
		 }
	 }
 }

需要记录层次的层序遍历

 struct node{
 	int data;
 	vector<int>child;
 	int level;
 }Node[maxn];
 void levelorder(int root){
 	queue<int>qu;
 	qu.push(root);
 	int node;
 	Node[root].level = 0;
 	while(qu.empty()!=true){
 		node = qu.front();
 		qu.pop();
 		printf("%d",Node[node].data);
 		for(int i=0;i<Node[node].child.size();i++){
 			int child = Node[node].child[i];
 			Node[child].level = Node[node].level+1;
 			qu.push(child);
		 }
	 }
 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值