Construct Binary Tree from Preorder and Inorder Traversal

3300阅读 0评论2015-09-02 qinchaowhut
分类:C/C++


  1. *
  2.  * Definition for a binary tree node.
  3.  * struct TreeNode {
  4.  * int val;
  5.  * struct TreeNode *left;
  6.  * struct TreeNode *right;
  7.  * };
  8.  */
  9.  
  10.   int findMid(int* inorder,int size,int x)//在中序遍历中寻找x元素;
  11.  {
  12.      int i=0;
  13.      for(;i<size;i++)
  14.      {
  15.          if(inorder[i]==x)
  16.             return i;
  17.      }
  18.  }
  19. struct TreeNode* buildTree(int* preorder, int preorderSize, int* inorder, int inorderSize) {
  20.     if(preorderSize<=0||inorderSize<=0)
  21.         return NULL;
  22.     struct TreeNode* root=malloc(sizeof(struct TreeNode));
  23.     int mid=preorder[0];
  24.     int left=findMid(inorder,inorderSize,mid);
  25.     root->val=mid;
  26.     root->left=buildTree(preorder+1,left,inorder,left);
  27.     root->right=buildTree(preorder+left+1,preorderSize-left-1,inorder+left+1,inorderSize-left-1);
  28.     return root;
  29. }

上一篇:Construct Binary Tree from Inorder and Postorder Traversal
下一篇:First Bad Version