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

    题目;

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

     题意及分析:给出棵二叉树的中序遍历和后续遍历,求这棵树。同用先序和中序推二叉树,不同的点是,后序遍历的最后一个点才是根节点。

    代码:

    /**
     * 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) {
            if(inorder.length==0) return null;
            TreeNode root = new TreeNode(postorder[postorder.length-1]);        //后序遍历最后一个节点为根节点
            build(root,inorder,postorder);
            return root;
        }
    
        public void build(TreeNode root,int[] inorder, int[] postorder){
            int nodeVal = root.val;
    
            int index = 0;
            for(int i=0;i<inorder.length;i++){
                if(inorder[i]==nodeVal){        //找到中序遍历分割左右子树的点
                    index = i;
                    break;
                }
            }
            int[] leftInorder=Arrays.copyOfRange(inorder,0,index);      //左子树中序遍历
            int[] leftPostorder=Arrays.copyOfRange(postorder,0,index);    //左子树后序遍历
            if(leftPostorder.length!=0){        //后序遍历的最后一个值为当前点的左节点
                root.left = new TreeNode(leftPostorder[leftPostorder.length-1]);
                build(root.left,leftInorder,leftPostorder);
            }
            
            int[] rightInorder=Arrays.copyOfRange(inorder,index+1,inorder.length);
            int[] rightPostorder=Arrays.copyOfRange(postorder,index,postorder.length-1);
            if(rightInorder.length!=0){
                root.right = new TreeNode(rightPostorder[rightPostorder.length-1]);
                build(root.right,rightInorder,rightPostorder);
            }
        }
    }
  • 相关阅读:
    YUI: Effects Widgets
    提高Web页面的性能(一)
    textindent 隐藏文字时出现的 outline 问题
    通过 Dom 方法提高 innerHTML 性能
    IE8 beta1 中的 CSS 属性
    推荐的 CSS 书写顺序
    来自经典论坛的javascript小小考题
    IE5 到 IE8 的 CSS 兼容列表
    backgroundclip 与 backgroundorigin 的一则运用
    收集整理的对#!bin/sh的认识
  • 原文地址:https://www.cnblogs.com/271934Liao/p/7198995.html
Copyright © 2011-2022 走看看