树---根据先序和中序输出后序

此题是根据先序和中序输出后序遍历,可以灵活修改,比如输出二叉树高度等等,代码如下:

#include <iostream>
#include <string>
#include<algorithm>
#include<bits/stdc++.h>
#include<stack>
#include<set>
#include <vector>
#include <map>
#include<queue>
using namespace std;
typedef struct Node{
    
    
	int data;
	struct Node *left,*right;
}Node,*Tree;
Tree create(int n,int *fir,int *mid){
    
    
	Tree tree=(Tree)malloc(sizeof(Node));
	if(n==0){
    
    
		return 0;
	}
	tree->data=fir[0];
	int i;
	for(i=0;mid[i]!=fir[0];i++);
	tree->left=create(i,fir+1,mid);
	tree->right=create(n-1-i,fir+i+1,mid+i+1);
	return tree;
}
void hou(Tree tree){
    
    
	if(tree){
    
    
		hou(tree->left);
		hou(tree->right);
		cout<<tree->data<<" ";
	}
}
int main() {
    
    
	int n;
	cin>>n;
	int fir[n];
	int mid[n];
	for(int i=0;i<n;i++){
    
    
		cin>>fir[i];
	}
	for(int i=0;i<n;i++){
    
    
		cin>>mid[i];
	}
	Tree tree=create(n,fir,mid);
	hou(tree);
	return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_45962741/article/details/113446769