美文网首页
判断二叉树中的元素系列

判断二叉树中的元素系列

作者: 麦兜儿流浪记 | 来源:发表于2019-08-06 09:08 被阅读0次

LeetCode 100 相同的数:

给定两个二叉树,编写一个函数来检验它们是否相同。
如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。

解题思路:
  1. 判断空集
  2. 若非空, 判断当前节点的同时,递归树的左子数和右子数
代码
class TreeNode(object):
    def __init__(self, x):
        self.val = x
        self.left = None
        self.right = None

class Solution(object):
    def isSameTree(self, p, q):
        if q is None and p is None:
            return True
        elif q is not None or p is not None:
            return q.val == p.val and self.isSameTree(p.left, q.left) \
                   and self.isSameTree(p.right,  q.right)

LeetCode 101 对称树:

给定一个二叉树,检查它是否是镜像对称的。
例如,二叉树 [1,2,2,3,4,4,3] 是对称的。


但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的:


解题思路
  1. 判断空集
  2. 若非空,与上一题类似,只不过要判断左子数和右子数是否相等
代码
class TreeNode(object):
    def __init__(self, x):
        self.val = x
        self.left = None
        self.right = None

class Solution(object):
    def isSymmetric(self, root):
        """
        1. 时间复杂度:O(n)
        2. O(n),因为我们遍历整个输入树一次,所以总的运行时间为O(n),
        其中n是树中结点的总数。
        3. 空间复杂度:递归调用的次数受树的高度限制。在最糟糕情况下,
        树是线性的,其高度为O(n)。
        4. 因此,在最糟糕的情况下,由栈上的递归调用造成的空间复杂度为O(n)
        """
        root1 = root
        root2 = root
        return self.isMirror(root1, root2)
    def isMirror(self, root1, root2):
        if root1 is None and root2 is None:
            return True
        if root2 is not None and root2 is not None:
            return root1.val == root2.val and self.isMirror(root1.left, root2.right) \
                   and self.isMirror(root1.right, root2.left)

相关文章

  • 判断二叉树中的元素系列

    LeetCode 100 相同的数: 给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且...

  • 关于二叉树的算法题

    前序遍历中序遍历后序遍历判断是否是平衡二叉树判断是否是对称二叉树判断二叉树高度按照层遍历二叉树判断二叉树宽度

  • 数据结构

    二分搜索树 向二分搜索树中插入元素的两种方法 判断数组中的元素是否是从小到大排序的 判断二叉树是否是一棵二分搜索树...

  • 3分钟理解布隆过滤器

    作用 用于判断某个元素是否存在于集合中 常规思路: 数组 链表 平衡二叉树 红黑树 哈希表 上述数据结构效率依次增...

  • Kotlin集合操作符

    总数操作符: any:判断集合中是否有满足条件的元素 all:判断集合中的元素是否都满足条件 none:判断集合是...

  • 元素的尺寸、位置和滚动事件的判定

    今天碰到了2个问题: 如何判断页面滚动到底部? 如何判断元素出现在视窗中? 老规矩先打开 MDN 看完一系列属性一...

  • 相同的树

    思路:其实就是同时遍历两个二叉树,然后判断相应的位置上是否有元素,或者元素是否相等,可以递归遍历也可以用队列来遍历...

  • 1 二叉树的最近公共祖先(leetcode 236) 2 判断是否为平衡二叉树 3 判断二叉树是否为满二叉树 4 ...

  • kotlin集合操作

    1.1 总数操作 方法作用: any--判断集合中是否有满足条件 的元素; all--判断集合中的元素是否都满足条...

  • 剑指offer第二版-28.对称的二叉树

    本系列导航:剑指offer(第二版)java实现导航帖 面试题28:对称的二叉树 题目要求:判断一棵二叉树是不是对...

网友评论

      本文标题:判断二叉树中的元素系列

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