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));
    }