标签:code 建立 二叉树 个数 前序遍历 style i++ uil node
前序中序序列建立二叉树:
//in[]和pre[]数组存放二叉树的中序和前序遍历序列 node* build(int preL,int preR,int inL,int inR){ if(preL>preR) return NULL; node* root=(node*)malloc(sizeof(node)); int val=pre[preL]; root->val=val; int x; for(int i=inL;i<=inR;i++){ if(in[i]==val){ x=i; break; } } x=x-inL; root->l=build(preL+1,preL+x,inL,inL+x-1); root->r=build(preL+1+x,preR,inL+x+1,inR); return root; }
后序中序序列建立二叉树:
//in[]和post[]数组存放二叉树的中序和后序遍历序列 node* build(int postL,int postR,int inL,int inR){ if(inL>inR) return NULL; node* root=(node*)malloc(sizeof(node)); root->val=post[postR]; int x; for(int i=inL;i<=inR;i++){ if(in[i]==root->val){ x=i; break; } } x=x-inL; //x表示左子树结点的个数 root->l=build(postL,postL+x-1,inL,inL+x-1); root->r=build(postL+x,postR-1,inL+x+1,inR); return root; }
标签:code 建立 二叉树 个数 前序遍历 style i++ uil node
原文地址:https://www.cnblogs.com/foodie-nils/p/13288623.html