zoukankan      html  css  js  c++  java
  • Construct Binary Tree from Inorder and Postorder Traversal

    Description:

    Given inorder and postorder traversal of a tree, construct the binary tree.

    Note:
    You may assume that duplicates do not exist in the tree.

    Code:

     1 TreeNode * buildTree(vector<int>& inorder, int inBegin, int inEnd, vector<int>& postorder, int postBegin, int postEnd)
     2  {
     3     TreeNode*root =NULL;
     4 
     5     if (postEnd >= postBegin)
     6     {
     7         root = new TreeNode(postorder[postEnd]);
     8     
     9         int rootIndex = 0;
    10         for (int i = inBegin; i <= inEnd; ++i)
    11         {
    12             if (inorder[i] == postorder[postEnd])
    13             {
    14                 rootIndex = i;
    15                 break;
    16             }
    17         }
    18         
    19         if (rootIndex!=inBegin)
    20         {
    21             root->left = buildTree( inorder, inBegin, rootIndex-1, postorder, postBegin, postBegin+(rootIndex-inBegin)-1);
    22         }
    23         if (rootIndex!=inEnd)
    24         {
    25             root->right = buildTree(inorder, rootIndex+1, inEnd, postorder, postBegin+(rootIndex-inBegin), postEnd-1);
    26         }
    27     }
    28     return root;  
    29  }
    30     TreeNode* buildTree(vector<int>& inorder, vector<int>& postorder) {
    31       return buildTree(inorder, 0, inorder.size()-1, postorder, 0, postorder.size()-1);  
    32     }
  • 相关阅读:
    第十次Java作业
    第七周Java作业
    第十二周作业
    上机练习
    第十一周作业
    第十一周上机练习
    第十周上机练习
    第九周上机作业
    第八周作业
    第八周上机作业
  • 原文地址:https://www.cnblogs.com/happygirl-zjj/p/4590604.html
Copyright © 2011-2022 走看看