zoukankan      html  css  js  c++  java
  • leetcode——106.从中序和后序遍历序列构造二叉树

    还可以,自己做得出来。

    public TreeNode buildTree(int[] inorder, int[] postorder) {
            //用一个map来存储中序
            int n = inorder.length;
            if(n == 0){
                return null;
            }else if(n == 1){
                return new TreeNode(inorder[0]);
            }
            Map<Integer,Integer> map = new HashMap<>();
            for(int i = 0;i<n;i++){
                map.put(inorder[i],i);
            }
            TreeNode root = new TreeNode(postorder[n-1]);
            //构建左子树
            int i = map.get(postorder[n-1]);   //找到根节点在中序遍历中的下标值
            root.left = buildTree(inorder,postorder,0,i-1,0,i-1,map);
            //构建右子树
            root.right = buildTree(inorder,postorder,i+1,n-1,i,n-2,map);
            return root;
        }
    
        private TreeNode buildTree(int[] inorder, int[] postorder, int in_start, int in_end, int post_start, int post_end,Map<Integer,Integer> map) {
            if(post_end < post_start){
                return null;
            }
            TreeNode node = new TreeNode(postorder[post_end]);
            int i = map.get(postorder[post_end]);
            node.left = buildTree(inorder, postorder, in_start, i, post_start, post_start+i-in_start-1, map);
            node.right = buildTree(inorder, postorder, i+1, in_end, post_start+i-in_start, post_end-1, map);
            return node;
        }

    ——2020.7.1

    我的前方是万里征途,星辰大海!!
  • 相关阅读:
    SRM482
    SRM481
    SRM480
    SRM479
    SRM478
    vue-cli 3 is not a modual err
    .vimrc
    css3 导入字体
    class []的用法
    RK61 Keyboard Use
  • 原文地址:https://www.cnblogs.com/taoyuxin/p/13221243.html
Copyright © 2011-2022 走看看