剑指offer4J

剑指offer4J【C2 P7】重建二叉树

2020-11-20  本文已影响0人  sxqiong

题目

根据树的前序、中序遍历构建出树结构

题解

什么是前序、中序我就不带大家复习了 根左右 左根右。


可爱的小树
前序遍历 [3,9,20,15,7]
中序遍历 [9,3,15,20,7]

前序分隔 中序分隔
    private int [] preorder;
    private Map<Integer,Integer> map;
    public TreeNode buildTree(int[] preorder, int[] inorder) {
        this.preorder = preorder;
        map = new HashMap<>(inorder.length);
        for (int i=0;i<inorder.length;i++) map.put(inorder[i],i);
        return buildTree(0,0,preorder.length-1);
    }
    private TreeNode buildTree(int rootIndexForPre,int startIndexForIn,int endIndexForIn){
        if(startIndexForIn>endIndexForIn) return null;
        TreeNode root = new TreeNode(preorder[rootIndexForPre]);
        int rootIndexForIn = map.get(preorder[rootIndexForPre]);
        root.setLeft(buildTree(rootIndexForPre+1,startIndexForIn,rootIndexForIn-1));
        root.setRight(buildTree(rootIndexForIn-startIndexForIn+rootIndexForPre+1,rootIndexForIn+1,endIndexForIn));
        return root;
    }



源码: 剑指offer4J

上一篇 下一篇

猜你喜欢

热点阅读