10.24笔试求解

自从伊甸园里,夏娃被骗吃苹果之后,到了人间,时间越久,越是怀念那时的美
好,尤其是后来听到炫曲《小苹果》之后,她找到了人间孕育最美好的一棵树。
这棵树上如此优雅: 远远望去,整颗树上苹果的大小,竟然是按照一种数学之 美"二叉树排列的, 除了树顶的那个苹果,其他苹果有且只有-个上层苹果与之相连,
但是因为之前的心理阴影,夏娃决定不会同时吃掉两个相连的苹果,但是又想让
自己吃到的苹果大小的总和达到最大
夏娃应该怎么选择才最好呢
例子:3,2,3,#,3,#,1(层序构建)
输出:7
说明 3+3+1=7
只有60%的通过率,why,是我漏了什么题目条件吗
         public int eating(TreeNode tree) {
        // write code here
        return Math.max(eat(tree, true),eat(tree, false));
    }

    private int eat(TreeNode tree, boolean flag) {//flag标记这一层吃还是不吃
        // write code here
        if (tree == null) {
            return 0;
        }
        int left = eat(tree.left, !flag);
        int right = eat(tree.right, !flag);
        if (!flag) {//如果不吃直接返回子树结果和
            return left + right;
        }
        return tree.val + left + right;
    }


全部评论
因为会出现连续两层不吃的情况
点赞 回复 分享
发布于 2022-05-08 17:12

相关推荐

11-18 09:44
Java
小白也想要offer:简历别放洋屁,搞不还还放错了,当然你投外企除外,以上纯属个人观点
点赞 评论 收藏
分享
2 1 评论
分享
牛客网
牛客企业服务