zoukankan      html  css  js  c++  java
  • LeetCode

    题目:

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

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

    思路:

    递归,preorder的第一个元素必然是根节点

    package treetraversal;
    
    public class ConstructBinaryTreeFromPreorderAndInorderTraversal {
    
        public TreeNode buildTree(int[] preorder, int[] inorder) {
            return construct(preorder, 0, preorder.length - 1, inorder, 0, inorder.length - 1);
        }
        
        private TreeNode construct(int[] preorder, int pstart, int pend, int[] inorder, int istart, int iend) {
            if (pstart > pend || istart > iend) return null;
            int rootVal = preorder[pstart];
            int index = -1;
            for (int i = istart; i <= iend; ++i) {
                if (inorder[i] == rootVal) {
                    index = i;
                    break;
                }
            }
            
            TreeNode root = new TreeNode(rootVal);        
            root.left = construct(preorder, pstart + 1, index - istart + pstart, inorder, istart, index - 1);
            root.right = construct(preorder, index - istart + pstart + 1, pend, inorder, index + 1, iend);
            return root;
        }
        
    }
  • 相关阅读:
    游戏《翻转方块》小攻略
    净捡软柿子捏--jQuery 遍历方法
    关于兼容
    sublime
    jQuery中json对象与json字符串互换
    css之IE透明度
    关于优化
    html5+css+div随时笔记
    css3学习--border
    JavaScript学习1
  • 原文地址:https://www.cnblogs.com/null00/p/5118067.html
Copyright © 2011-2022 走看看