腾讯音乐 含有重复元素的前序和中序的二叉树构造

    public ArrayList<TreeNode> getBinaryTrees(ArrayList<Integer> preOrder, ArrayList<Integer> inOrder) {
        int n = preOrder.size();
        return createTree(preOrder, inOrder, 0, n - 1, 0, n - 1);
    }

    private ArrayList<TreeNode> createTree(ArrayList<Integer> preOrder, ArrayList<Integer> inOrder, int pl, int ph, int il, int ih) {
        if (pl > ph) {
            return new ArrayList<>();
        }
        ArrayList<TreeNode> res = new ArrayList<>();
        for (int i = il; i <= ih; i++) {
            if (preOrder.get(pl).equals(inOrder.get(i))) {
                int leftNum = i - il;
                ArrayList<TreeNode> leftChildes = createTree(preOrder, inOrder, pl + 1, pl + leftNum, il, i- 1);
                ArrayList<TreeNode> rightChildes = createTree(preOrder, inOrder, pl + leftNum + 1, ph, i + 1, ih);
                for (TreeNode leftChild : leftChildes) {
                    for (TreeNode rightChild : rightChildes) {
                        TreeNode p = new TreeNode(preOrder.get(pl));
                        p.left = leftChild;
                        p.right = rightChild;
                        res.add(p);
                    }
                }
            }
        }
        return res;
    }

#腾讯音乐娱乐笔试#
全部评论
老哥代码是不是有点问题
点赞 回复 分享
发布于 2022-09-28 20:28 江苏

相关推荐

不愿透露姓名的神秘牛友
07-15 17:32
点赞 评论 收藏
分享
湫湫湫不会java:先投着吧,大概率找不到实习,没实习的时候再加个项目,然后把个人评价和荣誉奖项删了,赶紧成为八股战神吧,没实习没学历,秋招机会估计不多,把握机会。或者说秋招时间去冲实习,春招冲offer,但是压力会比较大
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务