java - 二叉树问题。检查相似的形状

标签 java algorithm tree

您好,我一直在做这件事,不知道该怎么做。

如果我有两棵二叉树,我如何检查它们是否具有相同的形状?节点中的数据无关紧要,只要树结构相等即可。

关于如何解决这个问题有什么想法吗?

最佳答案

您可以通过递归轻松地做到这一点。以下代码之所以有效,是因为当且仅当它们各自的子树具有相同的形状时,两个非空树具有相同的形状。

boolean equalTrees(Node lhs, Node rhs)
{
    // Empty trees are equal
    if (lhs == null && rhs == null)
        return true;

    // Empty tree is not equal to a non-empty one
    if ((lhs == null && rhs != null)
        || (lhs != null && rhs == null))
        return false;

    // otherwise check recursively
    return equalTrees(lhs.left(), rhs.left())
        && equalTrees(lhs.right(), rhs.right())
}

要检查两棵树,将它们的根节点传递给上面的函数。

equalTrees(tree1.root(), tree2.root())

关于java - 二叉树问题。检查相似的形状,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/741900/

相关文章:

java - 如何在 CPU 能力很小的设备上通过足够的迭代生成 secret

Web 应用程序中的 Java 类和实例变量内存使用情况?

java - 查找长度为 N 的重复子串

c# - 根据路径将文件节点添加到树中

javascript - 将同级项插入 Angular-UI-tree

java - 使用 builder.setView() 设置 AlertDialog 宽度以适合固定大小 imageview 的大小

java - 如何从FTP读取文件而不下载它们?

algorithm - 面试题: Insert switch to maximize time lightbulb spends on

algorithm - 我的布隆过滤器需要多少哈希函数?

c++ - C++中以下结构实现之间的区别