美文网首页
Leetcode 100 相同的树

Leetcode 100 相同的树

作者: SunnyQjm | 来源:发表于2020-06-28 08:28 被阅读0次

相同的树

题目

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

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

  • 示例1:

    输入:       1         1
              / \       / \
             2   3     2   3
    
            [1,2,3],   [1,2,3]
    
    输出: true
    
  • 示例2:

    输入:      1          1
              /           \
             2             2
    
            [1,2],     [1,null,2]
    
    输出: false
    
  • 示例3:

    输入:       1         1
              / \       / \
             2   1     1   2
    
            [1,2,1],   [1,1,2]
    
    输出: false
    

解答

  • 思路:

    • 判断当前两个根节点的值是否相等,不相等则返回false;
    • 递归判断对应的左子树和右子树是否相等
  • 代码:

    def isSameTree(self, p, q):
        """
        :type p: TreeNode
        :type q: TreeNode
        :rtype bool
    
        (knowledge)
        
        思路:
        1. 判断当前两个根节点的值是否相等,不相等则返回false
        2. 递归判断对应的左子树和右子树是否相等
        """
        if not p or not q:
            if not q and not p:
                return True
            else: 
                return False
    
        if p.val != q.val:
            return False
    
        return self.isSameTree(p.left, q.left) and self.isSameTree(p.right, q.right)
    

测试验证

class TreeNode:
    def __init__(self, x):
        self.val = x
        self.left = None
        self.right = None


class Solution:
    def isSameTree(self, p, q):
        """
        :type p: TreeNode
        :type q: TreeNode
        :rtype bool

        (knowledge)
        
        思路:
        1. 判断当前两个根节点的值是否相等,不相等则返回false
        2. 递归判断对应的左子树和右子树是否相等
        """
        if not p or not q:
            if not q and not p:
                return True
            else: 
                return False

        if p.val != q.val:
            return False

        return self.isSameTree(p.left, q.left) and self.isSameTree(p.right, q.right)


if __name__ == '__main__':
    solution = Solution()
    p = TreeNode(1)
    p.left = TreeNode(2)
    p.right = TreeNode(3)
    q = TreeNode(1)
    q.left = TreeNode(2)
    q.right = TreeNode(3)
    print(solution.isSameTree(p, q), "= True")

    p = TreeNode(1)
    p.left = TreeNode(2)

    q = TreeNode(1)
    q.right = TreeNode(2)
    print(solution.isSameTree(p, q), "= False")

相关文章

  • LeetCode 100. 相同的树 | Python

    100. 相同的树 题目来源:力扣(LeetCode)https://leetcode-cn.com/proble...

  • LeetCode 100——相同的树

    1. 题目 2. 解答 针对两棵树的根节点,有下列四种情况: p 和 q 都为空,两棵树相同; p 不为空 q 为...

  • Leetcode 100 相同的树

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

  • LeetCode - #100 相同的树

    前言 我们社区陆续会将顾毅(Netflix 增长黑客,《iOS 面试之道》作者,ACE 职业健身教练。)的 Swi...

  • LeetCode | 100.相同的树

    这次来写一下 LeetCode 的第 100 题,相同的树。 题目描述 题目直接从 LeetCode 上截图过来,...

  • LeetCode:100. 相同的树

    问题链接 100. 相同的树[https://leetcode.cn/problems/same-tree/] 问...

  • 100. 相同的树 leetcode

  • LeetCode-100-相同的树

    data: 2018-12-26 21:02:10原文链接 题目 给定两个二叉树,编写一个函数来检验它们是否相同。...

  • LeetCode100 相同的树

    题目: 思路: 1.找出终止条件以及对应的返回值 2.当不满足终止条件时,继续递归各自的左、右子树的值是否满足此函...

  • leetcode--100--相同的树

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

网友评论

      本文标题:Leetcode 100 相同的树

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