1. 程式人生 > >【資料結構】前序遍歷與中序遍歷構造二叉樹

【資料結構】前序遍歷與中序遍歷構造二叉樹

根據一棵樹的前序遍歷與中序遍歷構造二叉樹

具體程式碼如下:


 struct TreeNode {
      int val;
      struct TreeNode *left;
      struct TreeNode *right;
  };
   
struct TreeNode* _buildTree(int* preorder, int* pindex, int* inorder,int inbegin,int inend)
{
    if(inbegin>inend)
    {
        return NULL;
    }
    struct TreeNode* root=( struct TreeNode*)malloc(sizeof( struct TreeNode));
    root->val=preorder[*pindex];
    int rootindex=inbegin;
    for(rootindex=inbegin;rootindex<=inend;rootindex++)
    {
        if(inorder[rootindex]==root->val)
            break;
    }
    //構建左子樹
  
    (*pindex)++;
       root->left= _buildTree(preorder,pindex,inorder,inbegin,rootindex-1);
    
    //構建右子樹
   root->right=_buildTree(preorder,pindex,inorder,rootindex+1,inend);

    
    return root;
}

struct TreeNode* buildTree(int* preorder, int preorderSize, int* inorder, int inorderSize) {
   if(preorderSize==0&&inorderSize==0)
       return NULL;
    int index=0;
 struct TreeNode* root=  _buildTree(preorder,&index,inorder,0,inorderSize-1);
    return root;
    
}