C++的树的各种遍历模板

欢迎访问我的PAT技巧篇

先序遍历(中->左->右)

void preorder(node* root){
	if(root==NULL)return;
	printf("%d",root->data);
	preorder(root->lchild);
	preorder(root->rchild);
}

中序遍历(左->中->右)

void preorder(node* root){
	if(root==NULL)return;
	preorder(root->lchild);
	printf("%d",root->data);
	preorder(root->rchild);
}

后序遍历(左->右->中)

void preorder(node* root){
	if(root==NULL)return;
	preorder(root->lchild);
	preorder(root->rchild);
	printf("%d",root->data);
}

层次遍历

void BFS(int root){//静态树
	queue<int> q;
	q.push(root);
	while(!q.empty()){
		int now=q.front();
		q.pop();
		printf("%d",now);
		if(Node[now].lchild!=-1)q.push(Node[now].lchild);
		if(Node[now].rchild!=-1)q.push(Node[now].rchild);
	}
}

你可能感兴趣的:(PAT)