java - 测试两棵二叉树是否相等

标签 java algorithm recursion tree

我知道这可能是重复的帖子,但我会提交我自己的代码以引起您的注意。 我写了下面的递归过程,但我想优化它。 我想在发现与其他节点不同的节点时立即停止 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/

相关文章:

java - Android 通过滑动整个适配器 View 填充一个栏

java - 随机数生成器给出奇怪的结果

string - 准备字符串中的重复字符 - 算法

java - 递归排列字符串无法完成超过 9 个字符 - 抛出 OutOfMemoryError

java - Spring MVC 数据绑定(bind) - 原始类型

java - 为 Kafka 编译自定义生产者

php - 算法的时间复杂度: find length of a longest palindromic substring

algorithm - 验证 NP-hard 优化问题的解决方案的复杂性?

php - 优化碱基转化循环

c - 数组元素乘法的二叉树方法