Java 查找二叉树是否有奇数个节点
我已经编写了代码来查找二叉树是否有奇数个节点。但我想我遗漏了一些边缘案例。这没有返回正确的输出。我确实搜索过,但没有找到任何线索。有人能看一下我的代码并指导我吗Java 查找二叉树是否有奇数个节点,java,Java,我已经编写了代码来查找二叉树是否有奇数个节点。但我想我遗漏了一些边缘案例。这没有返回正确的输出。我确实搜索过,但没有找到任何线索。有人能看一下我的代码并指导我吗 public boolean oddNumber(Node root) { if(root==null) return false; if ((root.left!=null && root.right!=null) ) return tru
public boolean oddNumber(Node root) {
if(root==null)
return false;
if ((root.left!=null && root.right!=null) )
return true;
else
return oddNumber(root.left) || oddNumber(root.right );
}
解决方案:
public boolean isOdd(Node root) {
if(root==null)
return false;
return (isOdd(root.left)==isOdd(root.right));
}
树是否保证平衡?逻辑不正确。你必须记下某处的节点数。我能不记下节点数吗?我认为我们可以在没有进一步约束的情况下使用泛型,我不知道如何使用。更简单的是:
public boolean oddNumber(Node root){return root==null?false:oddNumber(root.left)==oddNumber(root.right);}
不使用nodeCount。
public boolean isOdd(Node root) {
if(root==null)
return false;
return (isOdd(root.left)==isOdd(root.right));
}