二叉树的遍历 先序 中序 -->确定数的形态
代码
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
struct TreeNode* buildTree(int* preorder, int preorderSize, int* inorder, int inorderSize) {
if(preorderSize == 0){
return NULL;
}
struct TreeNode* root = (struct TreeNode*)malloc(sizeof(struct TreeNode));
root->val = preorder[0];
root->left = root->right = NULL;
int i;
for(i=0;i<inorderSize;i++){
if(inorder[i] == preorder[0]) break;
}
struct TreeNode* left = buildTree( preorder+1, i,inorder,i);
struct TreeNode* right = buildTree(preorder+1+i,preorderSize-i-1,inorder+i+1,inorderSize-i-1);
root->left = left;
root->right = right;
return root;
}
解题思路 onedrive