gpt4 book ai didi

java - Java中二叉树的递归检查

转载 作者:行者123 更新时间:2023-11-30 02:40:02 25 4
gpt4 key购买 nike

这是以下 Java 谜题 ( http://code-exercises.com/programming/medium/28/strict-binary-tree-check ) 中的一个小问题。任务是编写一个方法来检查给定二叉树中的所有节点是否具有 0 个或 2 个子节点。

他们的解决方案如下

public Boolean isStrictTree(TreeNode node) {
if (node == null) {return true;}
if ((node.left() == null && node.right() != null) || (node.left() != null && node.right() == null)) {return false;}

return isStrictTree(node.left()) && isStrictTree(node.right());
}

我想出了类似的东西,但它不起作用。区别在于

a) 第一行 - 处理 null 情况(返回“null”而不是“true”)

b)递归的结构 - 我的递归结构以某种方式混杂在一起(如果我追踪一张纸上发生的情况,这种方式应该有效),而不是将其分散在两行上的解决方案 - 条件和返回语句。

public Boolean isStrictTree(TreeNode node) {
if (node == null) {return null;}

else if ((isStrictTree(node.left()) == true) && (isStrictTree(node.right())==null)) {return false;}

return true;
}

脚本运行但不返回任何内容。我真的很想了解为什么它不起作用,似乎我可以在这里学到一些东西,所以任何见解都会受到赞赏。

最佳答案

您有两个选择:要么节点有效/平衡,然后返回 true,要么节点无效/不平衡,返回 false。为什么要引入第三种状态 - null?不需要那个东西。

为什么它不起作用:在 (isStrictTree(node.left()) == true 中,对 isStrictTree(...) 的调用将返回 null 在某个时间点,因此当将其与 true 进行比较时,您会得到 NullPointerException。

关于java - Java中二叉树的递归检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42032618/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com