zoukankan      html  css  js  c++  java
  • 106. 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.

    Hide Company Tags
     Microsoft
    Show Tags
    Hide Similar Problems
     
    /**
     * Definition for a binary tree node.
     * public class TreeNode {
     *     int val;
     *     TreeNode left;
     *     TreeNode right;
     *     TreeNode(int x) { val = x; }
     * }
     */
    public class Solution {
        public TreeNode buildTree(int[] inorder, int[] postorder) {
            return buildSubTree(0, postorder.length -1, postorder, inorder, 0, postorder.length-1);
        }
        public TreeNode buildSubTree(int postLeft, int postRight, int[] postorder, int[] inorder, int inLeft, int inRight){
            if(postRight < postLeft || inLeft > inRight) return null;
            int mid = inLeft;
            TreeNode root = new TreeNode(postorder[postRight]);
            while(mid <= inRight){
                if(postorder[postRight] == inorder[mid]){
                    root.left = buildSubTree(postLeft, postRight+mid-inRight -1 , postorder, inorder, inLeft, mid-1);
                    root.right = buildSubTree(postRight+mid-inRight, postRight -1, postorder, inorder, mid+1, inRight);
                }
                mid++;
            }
            return root;
        }
    }
  • 相关阅读:
    子查询
    视频工作工具链
    视频拆帧与组帧
    二叉树
    回溯法
    windows配置编译器
    C++工厂模式
    C++单例模式
    HTML学习记录
    C++代码规范
  • 原文地址:https://www.cnblogs.com/joannacode/p/5955089.html
Copyright © 2011-2022 走看看