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

    思路
    • 递归
    /**
     * Definition for a binary tree node.
     * struct TreeNode {
     *     int val;
     *     TreeNode *left;
     *     TreeNode *right;
     *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
     * };
     */
    class Solution {
    public:
        TreeNode* buildTree(vector<int>& inorder, vector<int>& postorder) {
            return build(inorder,0,inorder.size()-1,postorder,0,postorder.size()-1);
        }
        TreeNode* build(vector<int>& inorder,int s0,int e0,vector<int>& postorder,int s1,int e1){
            if(s0 > e0 || s1 > e1) return NULL;
            int rootval = postorder[e1];
            TreeNode *root = new TreeNode(rootval);
            int mid = 0;
            for(int i = s0; i <= e0; i++){
                if(inorder[i] == rootval) mid = i;
            }
            root->left = build(inorder,s0,mid-1,postorder,s1,s1+mid-s0-1);
            root->right = build(inorder,mid+1,e0,postorder,s1+mid-s0,e1-1);
            return root;
        }
    };
    
  • 相关阅读:
    我的学习记录-JAVA SE 03
    我的学习记录-JAVA SE 02
    我的学习记录-JAVA SE 01
    我的mysql的学习记录
    Hibernate4学习一
    java3
    java5
    java基础4
    java2
    java
  • 原文地址:https://www.cnblogs.com/UniMilky/p/7016254.html
Copyright © 2011-2022 走看看