我知道这可能是一个重复的帖子,但我会提交我自己的代码给你注意。
我编写了以下递归过程,但我想优化它。
当我发现一个节点不同于其他节点时,我想立即停止treecompare方法,而不是比较所有节点。
提前谢谢你的帮助。
这是我的瘦节点类:

public class Node {
    public Node father;
    public Node left;
    public Node right;
}

这是我的比较器方法:
private boolean treeCompare(Node firstNode, Node secondNode) {
    if (firstNode == null && secondNode == null)
        return true;
    else if (firstNode == null || secondNode == null)
        return false;

    boolean isLEquals = treeCompare(firstNode.left, secondNode.left);
    boolean isREquals = treeCompare(firstNode.right, secondNode.right);

    return firstNode.equals(secondNode) && isLEquals && isREquals;
}

最佳答案

private boolean treeCompare(Node firstNode, Node secondNode) {
    if (firstNode == secondNode)
        return true;

    if (firstNode == null || !firstNode.equals(secondNode))
        return false;

    return treeCompare(firstNode.left, secondNode.left) && treeCompare(firstNode.right, secondNode.right);
}

关于java - 测试两个二叉树是否相等,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34184044/

10-10 06:11