题解 | #重建二叉树#
重建二叉树
http://www.nowcoder.com/practice/8a19cbe657394eeaac2f6ea9b0f6fcf6
/**
- struct TreeNode {
- int val;
- struct TreeNode *left;
- struct TreeNode *right;
- };
- C语言声明定义全局变量请加上static,防止重复定义 / /*
- 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
- @param pre int整型一维数组
- @param preLen int pre数组长度
- @param vin int整型一维数组
- @param vinLen int vin数组长度
- @return TreeNode类
/
struct TreeNode reConstructBinaryTree(int* pre, int preLen, int* vin, int vinLen ) {
if(preLen==0){
return NULL;
}else{
struct TreeNode* head=(struct TreeNode*)malloc(sizeof(struct TreeNode));
int k=0;int length_left=0;int length_right=0;
head->val=*pre;
while(k<preLen){
if(pre[0]==vin[k]){break;}
else{k++;}
}length_left=k;
length_right=vinLen-k-1;
head->left=reConstructBinaryTree(pre+1,k,vin,k);
head->right=reConstructBinaryTree(pre+1+k,vinLen-k-1,vin+k+1,vinLen-k-1);
return head;
}
}