• [LeetCode] Construct Binary Tree from Inorder and Postorder Traversal


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

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

    class Solution {
    public:
        TreeNode *buildTree(vector<int> &inorder, vector<int> &postorder) {
            int len = inorder.size();
            return build(inorder,0,len-1,postorder,0,len-1);
        }
    private:
        TreeNode * build(vector<int> &inorder,int begInorder,int endInorder, vector<int> &postorder,int begpostorder,int endpostorder){
            
            if(begInorder>endInorder || begpostorder>endpostorder)
                return NULL;
            
            int val = postorder[endpostorder];
            TreeNode *root = new TreeNode(val);
            if(endInorder==begInorder)
                return root;
            int i,j=0;
            for(i=begInorder;i<=endInorder;i++,j++){
               if(inorder[i]==val)
                   break;
            }
                
            root->left = build(inorder,begInorder,i-1,postorder,begpostorder,begpostorder+j-1);
            root->right = build(inorder,i+1,endInorder,postorder,begpostorder+j,endpostorder-1);
            return root;
        
        }
    };
  • 相关阅读:
    【CodeForces 788B】奇妙的一笔画问题
    数论day2——离散对数、元根
    学习阶段总结(1)
    Flask特殊装饰器
    Flask蓝图
    Flask对象配置
    Flask实例化配置
    Flask路由
    Flask Session
    Flask jinja2
  • 原文地址:https://www.cnblogs.com/Xylophone/p/3890980.html
Copyright © 2020-2023  润新知