华为OD机试真题 - 最富裕的小家庭

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int num = Integer.parseInt(in.nextLine());
        String str = in.nextLine();
        int[] assets = Arrays.stream(str.split(" ")).mapToInt(Integer::parseInt).toArray();
        int[][] map = new int[num - 1][2];
        for (int i = 0; i < num - 1; i++) {
            map[i] = Arrays.stream(in.nextLine().split(&quot; &quot;)).mapToInt(Integer::parseInt).toArray();
        }
        Node head = buildTree(map, assets);
//        printTree(head);
        System.out.println(getMaxFamlie(head));
    }

    public static int getMaxFamlie(Node head) {
        if (head == null)
            return 0;
        int max = 0;
        max += head.value;
        if (head.left != null)
            max += head.left.value;
        if (head.right != null)
            max += head.right.value;
        max = Math.max(getMaxFamlie(head.left), max);
        max = Math.max(getMaxFamlie(head.right), max);
        return max;
    }

    public static Node buildTree(int[][] map, int[] assets) {
        int count = 0;
        Node[] nodes = new Node[assets.length];
        for (int i = 0; i < assets.length; i++) {
            nodes[i] = new Node(assets[i]);
        }
        for (int i = 0; i < map.length; i++) {
            if (nodes[map[i][0] - 1].left == null)
                nodes[map[i][0] - 1].left = nodes[map[i][1] - 1];
            else nodes[map[i][0] - 1].right = nodes[map[i][1] - 1];
        }
        return nodes[0];
    }

    public static void printTree(Node head) {
        if (head == null)
            return;
        System.out.println(head.value);
        printTree(head.left);
        printTree(head.right);
    }

    static class Node {
        int value;
        Node left;
        Node right;
        public Node(int value) {
            this.value = value;
        }
    }
全部评论

相关推荐

07-23 14:04
东北大学 C++
既然这样,为什么不点击就送呢
牛马88号:因为你合适。但有很多笔试就挂了、通过了再排序的
点赞 评论 收藏
分享
白火同学:先说结论,准大三不是特别好找实习,boss沟通300+没有实习是很正常的情况。一是暑期实习时间太短了,二是在这么多准大四都找不到实习,从实习时间和掌握技术层面,企业会优先看他们。 再说简历,其实985本+准大三到这水平的简历也很优秀了,要说的话,项目经历可以再优化一下,可以基本围绕采取STAR原则,分为项目概述、技术架构、技术亮点、实现结果,再发给AI润色一下。 最后说操作,准大三的话,如果想找实习那就多投,不过现在也7月中旬了,时间上已经略晚了。如果7月底实在找不到,也可以多刷点算法,多学点技术,这实习也不至于一定得有,当然有更好。
点赞 评论 收藏
分享
Lorn的意义:1.你这根本就不会写简历呀,了解太少了 2.你这些项目经历感觉真的没啥亮点啊,描述的不行,重写书写一下让人看到核心,就继续海投 注意七八月份ofer还是比较多的,越往后机会越少,抓住时机,抓紧检查疏漏,加油查看图片
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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