100. 相同的树(Python)

更多题目移步【力扣简单题】

题目

难度:★☆☆☆☆
类型:二叉树

给定两个二叉树,编写一个函数来检验它们是否相同。

如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。

示例

示例 1:

输入: [1,2,3], [1,2,3]

     1         1
    / \       / \
   2   3     2   3

输出: true

示例 2:

输入: [1,2], [1,null,2]

       1         1
      /            \
     2              2

输出: false

示例 3:

输入: [1,2,1], [1,1,2]

      1         1
    /  \       /  \
   2   1      1   2

输出: false

解答

判定两棵二叉树是否相等,需要进行如下判断:

  1. 两棵二叉树均为空,则相等;

  2. 两棵二叉树其中一棵为空,另一棵不为空,则不相等;

  3. 两棵二叉树均不为空,如果根节点的值相等,左子树相等和右子树相等,则这两棵二叉树相等,否则不相等。

代码实现如下:

class Solution:
    def isSameTree(self, p, q):
        def same_tree(p, q):
            if not p and not q:                         # 两棵树均为空
                return True
            elif not p and q or not q and p:            # 两棵树只有一棵为空
                return False
            else:
                return p.val == q.val and same_tree(p.left, q.left) and same_tree(p.right, q.right)
        return same_tree(p, q)

如有疑问或建议,欢迎评论区留言~

你可能感兴趣的:(100. 相同的树(Python))