zoukankan      html  css  js  c++  java
  • LeetCode106. 从中序与后序遍历序列构造二叉树

    题目

    代码

     1 class Solution {
     2 public:
     3    
     4     TreeNode* buildTree(vector<int>& inorder, vector<int>& postorder) {
     5         //第一步
     6         if(postorder.size() == 0) return NULL;
     7 
     8         //第二步,后序数组的最后一个元素就是当前元素
     9         int rootValue = postorder[postorder.size()-1];
    10         TreeNode *root = new TreeNode(rootValue);
    11         if(postorder.size() == 1) return root; //只有一个根节点
    12 
    13         //第三步,找到后序数组最后一个元素在中序数组的位置,作为切割点
    14         int Index;
    15         for(Index = 0;Index < inorder.size();Index++){
    16             if(inorder[Index] == rootValue) break;
    17         }
    18         
    19         //第四步,切割中序数组,得到中序左数组、中序右数组
    20         //采用左闭右开,[0,Index)
    21         vector<int>leftInorder(inorder.begin(),inorder.begin()+Index);
    22         //[Index+1,end)
    23         vector<int>rightInorder(inorder.begin()+Index+1 ,inorder.end());
    24 
    25         //第五步,切割后序数组,得到后序左数组,后序右数组
    26         postorder.pop_back(); //舍弃最后一个元素 postorder.erase(postorder.end()-1) 参数为迭代器 
    27         //采用左闭右开
    28         //[0,leftInorder.size)
    29         vector<int>leftPostorder(postorder.begin(),postorder.begin()+leftInorder.size());
    30         //[leftInorder.size,postorder.size)
    31         vector<int>rightPostorder(postorder.begin()+leftInorder.size(),postorder.end());
    32 
    33         //第六步,递归处理左、右
    34         root->left = buildTree(leftInorder,leftPostorder);
    35         root->right = buildTree(rightInorder,rightPostorder);
    36         return root;
    37     }
    38 };

    注意:

    1.stl 中 vector 赋初值的方法 :https://www.cnblogs.com/quyc/p/12857054.html

    2. stl 中的容器和算法都是左闭右开的 https://www.zhihu.com/question/61054439

  • 相关阅读:
    web service 项目 和 普通 web项目 的 区别
    1) Apache Maven 's README.txt
    spring + rs + RocketMQ 【精】
    wadl 的自动生成(cxf版本3.1.1)
    新建maven web 项目后,出现的小问题
    cxf-rs client 调用
    wadl 的自动生成(cxf版本2.7.6)
    Java学习路线
    Tomcat 学习记录
    Spring Boot 学习记录
  • 原文地址:https://www.cnblogs.com/fresh-coder/p/14514479.html
Copyright © 2011-2022 走看看