为什么我的递归dfs函数返回错误的值?

危机

试图做一个leetcode问题,但我坚持这一一棵树的问题。https://leetcode.com/problems/longest-univalue-path/

我的解决方案不适用于以下测试用例,但我尝试对其进行调试,无法弄清原因。当我查看它时,我在代码中得到了正确的答案。希望有人能告诉我我做错了什么。谢谢下面是它失败的测试用例和我在Java中的代码

[5,4,5,4,4,5,3,4,4,null,null,null,4,null,null,4,null,null,4,null,4,4,null,null,4,4]
class Solution {
    int longestPath = 0;
    public int longestUnivaluePath(TreeNode root) {
        dfs(root, root.val);
        
        return longestPath ;
    }
    
        public int dfs(TreeNode root, int value){
        if(root == null) return 0;
        
        int leftPath = dfs(root.left, root.val);
        int rightPath = dfs(root.right, root.val);
        
        longestPath = Math.max(longestPath, leftPath + rightPath);
        
        int val = (root.val == value) ? 1 : 0;
        return Math.max(leftPath, rightPath) + val;
    }
}
艾玛

看起来挺好的!

返回条件必须修改。这将通过:

class Solution {
    int longestPath = 0;
    public int longestUnivaluePath(TreeNode root) {
        if (root == null) {
            return 0;
        }
        
        dfs(root, root.val);

        return longestPath ;
    }

    public int dfs(TreeNode root, int value) {
        if (root == null) {
            return 0;
        }

        int leftPath = dfs(root.left, root.val);
        int rightPath = dfs(root.right, root.val);

        longestPath = Math.max(longestPath, leftPath + rightPath);

        return root.val == value ? 1 + Math.max(leftPath, rightPath) : 0;
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么这个递归函数返回错误的值?

为什么我的递归函数返回 None 值

为什么我的递归函数返回None?

为什么我的INDEX / MATCH函数返回错误的值?

为什么当我递归调用函数时,我的函数不返回以前的值,而不返回新的值?

为什么我创建的自定义函数返回空值?-DFS

为什么返回值在我的递归函数中变得未定义?

为什么 Python 函数返回错误的值?

为什么 Python 函数返回错误的值?

为什么我的方法返回错误的值?

为什么我的程序返回错误的值?

为什么我的代码返回错误的值?

为什么我的递归函数返回未定义?

为什么我的递归函数返回“未定义”?

为什么递归函数在返回时取最新值?

为什么此递归函数返回正确的值?

递归函数返回错误的值

为什么我在 Firebase 中收到此错误“函数返回未定义、预期的承诺或值”

为什么递归函数返回意外结果?

为什么递归函数返回“无”

错误分段错误 - 为什么我的代码不断地无限调用我的递归函数?

为什么我在返回函数中收到此错误?

不确定为什么我的函数不断返回错误?

为什么 LGBM 的预测函数返回值错误?

为什么这个过滤函数返回值错误?

为什么我的异步函数返回Promise {<pending>}而不是值?

为什么我的异步函数返回Promise {<pending>}而不是值?

为什么我的arrow函数不返回值?

为什么我不能从主函数返回更大的值?