微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

确定两个二叉树是否交换等价的时间复杂度

如何解决确定两个二叉树是否交换等价的时间复杂度

我已经解决this 问题,关于确定两个二叉树是否与下面的代码片段相等。

问题如下:

对于二叉树T,我们可以定义如下翻转操作:选择任意>节点,交换左右子树。

二叉树X翻转等价于二叉树Y当且仅当 我们可以在一定次数的翻转操作后使 X 等于 Y。

给定两棵二叉树 root1 和 root2 的根,如果 两棵树是翻转等价的,否则为假。

我的推理是对于四个递归调用中的每一个,增长函数是 T(n)=4(T(n-1)) 一个,其中 n 是最大树的高度。然后我希望它的时间复杂度为 O(4^n) 但这与解决方案中的推理不匹配,即时间复杂度为 O(max(N_1,N_2))。

考虑到解决方案具有不同的时间复杂度,这种 O(4^n) 的推理有什么缺陷?

class Solution {
    public boolean flipEquiv(TreeNode root1,TreeNode root2) {
        if (root1 == root2)
            return true;
        if (root1 == null || root2 == null || root1.val != root2.val)
            return false;

        return (flipEquiv(root1.left,root2.left) && flipEquiv(root1.right,root2.right) ||
                flipEquiv(root1.left,root2.right) && flipEquiv(root1.right,root2.left));
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。