标签:add ali div node turn highlight 验证 bec new
#include <bits/stdc++.h>
using namespace std;
const int N = 100010;
int pre[N], in[N], post[N];  //先序、中序、后序
int k;
struct node{
    int value;
    node *l, *r;
    //node(int value = 0, node *l = NULL, node *r = NULL):value(value), l(l), r(r){}
};
//void buildtree(int l, int r, int &t, node* &root) { //建树
//    int flag = -1;
//    for(int i = l; i <= r; i++) //先序的第一个是根,找到对应的中序的位置
//        if(in[i] == pre[t]){
//            flag = i; break;
//        }
//    if(flag == -1) return;       //结束
//    root = new node(in[flag]);   //新建结点
//    t++;
//    if(flag > l)  buildtree(l, flag - 1, t, root ->l);
//    if(flag < r)  buildtree(flag + 1, r, t, root ->r);
//}
void add(node * &root ,int & t ){
	if(root == NULL){
		root = new node; 
		root->value=t;
		root->l=root->r=NULL;
	}else{
		if( t > root->value) 
			add( root->r,t);
		else 
			add(root->l,t);
	}
	
}
void preorder (node *root){       //求先序序列
    if(root != NULL){
        post[k++] = root ->value;  //输出
        preorder (root ->l);
        preorder (root ->r);
    }
}
void inorder (node *root){        //求中序序列
    if(root != NULL){
        inorder (root ->l);
        post[k++] = root ->value;  //输出
        inorder (root ->r);
    }
}
void postorder (node *root){      //求后序序列
    if( root != NULL){
        postorder (root ->l);
        postorder (root ->r);
        post[k++] = root ->value;  //输出
    }
}
void remove_tree(node *root){      //释放空间
    if(root == NULL) return;
    remove_tree(root->l);
    remove_tree(root->r);
    delete root;
}
int main(){
    int n;   
	
    while(~scanf("%d", &n)){
		node *root=NULL;
		int x;
        for(int i=1;i<=n;i++){
        	 scanf("%d", &x);
        	 add(root,x );
        }
        k = 0;           //记录结点个数
        preorder(root);
        for(int i=0;i<k;i++) printf("%d%c",post[i], i==k-1? ‘\n‘ : ‘ ‘);
          //作为验证,这里可以用preorder()和inorder()检查先序和中序遍历
        remove_tree(root);
    }
    return 0;
}
标签:add ali div node turn highlight 验证 bec new
原文地址:https://www.cnblogs.com/lyj1/p/11518881.html