0
点赞
收藏
分享

微信扫一扫

力扣-第100题--相同的树(python)--详细解析--逐步调试

花明 2022-02-11 阅读 74

原题:
给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。
如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。
在这里插入图片描述


解题思路:
网址:https://leetcode-cn.com/problems/same-tree/solution/100-xiang-tong-de-shu-by-edelweisskoko-3iqr/


思路一:DFS 深度优先搜索
特例处理,先比较两个根节点:

  1. 如果两节点都为空,返回true;
  2. 如果两节点一个为空一个不为空,返回false;
  3. 如果两节点值不相同,返回false
  4. 如果两个节点值相同,比较左子树和右子树是否相同,这就进入了递归
class Solution:
    def isSameTree(self, p: TreeNode, q: TreeNode) -> bool:
        if not p and not q: # 如果两节点都为空,返回true;
            return True
        elif not p or not q: # 如果两节点一个为空一个不为空,返回false;
            return False
        elif p.val != q.val: # 如果两节点值不相同,返回false
            return False
        else: # 如果两个节点值相同,比较左子树和右子树是否相同,这就进入了**递归**。
            return self.isSameTree(p.left, q.left) and self.isSameTree(p.right, q.right)

代码逐步解析:
----关于前、中、后序遍历,见我另一篇文章:
https://blog.csdn.net/qq_37706433/article/details/122492862

import collections

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

# 方法一:深度优先搜索
class Solution:
    def isSameTree(self, p: TreeNode, q: TreeNode) -> bool:
        if not p and not q:
            return True
        elif not p or not q:
            return False
        elif p.val != q.val:
            return False
        else:
            return self.isSameTree(p.left, q.left) and self.isSameTree(p.right, q.right)

if __name__ == '__main__':
    s = Solution()
    # 创建二叉树1
    root1 = TreeNode(10)
    root1.left = TreeNode(5)
    root1.right = TreeNode(15)
    root1.left.left = TreeNode(2)
    root1.left.right = TreeNode(5)
    root1.right.right = TreeNode(22)
    root1.left.left.left = TreeNode(1)

    # 创建二叉树2
    root2 = TreeNode(10)
    root2.left = TreeNode(5)
    root2.right = TreeNode(15)
    root2.left.left = TreeNode(2)
    root2.left.right = TreeNode(5)
    root2.right.right = TreeNode(22)
    root2.left.left.left = TreeNode(1)
    # 实例化
    result_list = s.isSameTree(root1, root2)
    print('result_list:', result_list)
举报

相关推荐

0 条评论