重建二叉树

重建二叉树

http://www.nowcoder.com/questionTerminal/8a19cbe657394eeaac2f6ea9b0f6fcf6

递归建立二叉树。

public class Solution {
    class TreeNode {
        int val;
        TreeNode left;
        TreeNode right;

        TreeNode(int x) {
            val = x;
        }
    }

    private TreeNode create(int[] pre, int[] in, int _i, int _j, int i, int j){
        if (i > j || i < 0) return null;
        if (j-i == 0) {
            return new TreeNode(pre[_i]);
        }
        int k = 0;
        while (in[k] != pre[_i]) ++k;
        TreeNode treeNode = new TreeNode(pre[_i]);
        treeNode.left = create(pre, in, _i+1, _i+(k-i), i, k-1);
        treeNode.right = create(pre, in, _i+(k-i)+1, _j, k+1, j);

        return treeNode;
    }

    public TreeNode reConstructBinaryTree(int[] pre, int[] in) {
        return create(pre,  in,0, pre.length-1, 0, in.length-1);
    }
}
全部评论

相关推荐

大摆哥:刚好要做个聊天软件,直接让你帮他干活了
点赞 评论 收藏
分享
02-25 11:29
产品经理
牛客444597598号:兄弟 我只能说如果想找产品经理这种简历 基本就是毕业失业了 你这连实习都找不到的 简历跟产品经理一点都没有关系,你可以去搜搜产品的模版吧
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务