美文网首页
判断子树

判断子树

作者: 做一只有趣的芦苇 | 来源:发表于2024-08-04 07:15 被阅读0次

今日收获:

1.如何判断一棵树 A 是不是另外一棵树 B 的子树
A== B 或者 A是B的左子树或者 A是B的右子树
那么A ==B 的条件是:A 所有节点的值和B的所有对应节点的值相等

2.树的时间复杂度要看节点的个数,假设A有 m个节点,B有n个节点
最坏情况下,每次判断A是否和B 某个节点对应的子树相同时,需要遍历A中所有的节点,所以时间复杂度为 O(m) B中所有的节点都会遍历,所以总时间复杂度 为 O(m * n)

3.树的空间复杂度要看树的深度
理论基础:递归深度,参考如下解释

Recursion depth refers to the number of recursive calls that are active at the same time. Each recursive call adds a new frame to the call stack. The depth of recursion is the maximum number of these frames that can exist simultaneously during the execution of the recursive algorithm.

所以我们有如下结论:

isSubtree Method:
The space complexity is determined by the recursion depth, which is the height of the tree.
In the worst case (skewed tree), the height is 𝑂(𝑛)

isSameTree Method:
Similarly, the space complexity is determined by the recursion depth, which is the height of the subtree being compared.
In the worst case, this height is 𝑂(𝑚)

Combined Space Complexity:
The maximum depth of recursion when both methods are called is O(n+m).

相关文章

  • 101. Symmetric Tree

    判断二叉树是否对称 同时遍历左子树和右子树,判断是否对称

  • 面试题26:树的子结构

    该题的思路应该使用递归来判断,通过判断左子树和右子树来判断树是否是子结构,当子结构为空时,则判断成功

  • 平衡二叉树

    题目描述输入一棵二叉树,判断该二叉树是否是平衡二叉树。 思路法一:每次判断当前树的左右子树高度差,然后判断子树的子...

  • [二叉树] 判断二叉树是否平衡二叉树

    思路: 从根节点开始,判断左右子树是否是平衡的,如果都是平衡的,则判断左右子树的高度差是否不大于1 复杂度: O(n)

  • BST判断

    判断BST:1.假如二叉树的左子树不为空,则左子树上所有节点的值均小于它的根节点的值; 假如右子树不空,则右子树上...

  • 572. Subtree of Another Tree [Ea

    572. Subtree of Another Tree 如果是判断子结构,不是子树

  • 平衡二叉树

    题目 实现 1、首先需要计算节点的高度,当前节点高度=max(左子树,右子树)+1。2、判断是否平衡,若abs(左...

  • 判断两棵二叉树是否相等

    算法思想:先序遍历,递归实现。先判断根节点是否相等,然后在判断左右子树是否相等。代码如下

  • 判断二叉树的子树&子结构(C++)

    判断二叉树B是否是二叉树A的子树或子结构。 定义区别 子树:若B是A的子树,则A包含B的所有结点,并且B的叶子节点...

  • LeetCode-101-对称二叉树(迭代法)(python)

    上一篇写了对称二叉树判断的递归解法:即对称子树需要满足:1.两棵子树根节点值相等 2. 左右子树镜像对称这一篇讲解...

网友评论

      本文标题:判断子树

      本文链接:https://www.haomeiwen.com/subject/nghtkjtx.html