gpt4 book ai didi

java - 是否可以在少于 O(n log n) 的时间内比较两个二叉树?

转载 作者:搜寻专家 更新时间:2023-10-30 21:05:07 25 4
gpt4 key购买 nike

我写了一个 java 例程来比较 2 个二叉树。我正在寻找运行时间更短的更好算法。

 public class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) { val = x; }
}

class Solution {
public boolean isSameTree(TreeNode p, TreeNode q) {

if ( p == null && q==null)
return true;

if (p == null || q == null)
return false;

if ( (p.val == q.val) && isSameTree(p.left, q.left) &&
isSameTree(p.right, q.right))
return true;
else
return false;
}
}

我的代码需要 O(n log n) 时间。

如何减少所需时间?

最佳答案

您的方法的当前运行时间实际上是 O(n),其中 n 应该是 具有较少(或相等)节点的树

此外,请注意比较数据结构的所有值您必须访问所有这些值,这是您可以实现的运行时间,而不是进一步减少。在当前情况下,在最坏的情况下,您将不得不访问较小树的所有节点,因此 O(n)

因此,尽管任何其他方法都可以帮助您进行条件优化,但您当前的解决方案具有无法进一步减少的最佳运行时间。

关于java - 是否可以在少于 O(n log n) 的时间内比较两个二叉树?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54067216/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com