• 100. 相同的树


    给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。

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

    示例 1:


    输入:p = [1,2,3], q = [1,2,3]
    输出:true


    示例 2:

    输入:p = [1,2], q = [1,null,2]
    输出:false


    示例 3:


    输入:p = [1,2,1], q = [1,1,2]
    输出:false
     

    提示:

    两棵树上的节点数目都在范围 [0, 100] 内
    -104 <= Node.val <= 104

    dfs写法

    # Definition for a binary tree node.
    # class TreeNode:
    #     def __init__(self, val=0, left=None, right=None):
    #         self.val = val
    #         self.left = left
    #         self.right = right
    class Solution:
        def isSameTree(self, p: TreeNode, q: TreeNode) -> bool:
            if not p and not q:
                return True
            elif (not p) ^ (not q):
                return False
            
            if p.val != q.val:
                return False
    
            return self.isSameTree(p.left, q.left) and self.isSameTree(p.right, q.right)

    bfs写法

    # Definition for a binary tree node.
    # class TreeNode:
    #     def __init__(self, val=0, left=None, right=None):
    #         self.val = val
    #         self.left = left
    #         self.right = right
    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
            
            queue1, queue2 = [p], [q]
    
            while queue1 and queue2:
                node1, node2 = queue1.pop(0), queue2.pop(0)
                if node1.val != node2.val:
                    return False
    
                if (not node1.left) ^ (not node2.left):
                    return False
                elif (not node1.right) ^ (not node2.right):
                    return False
    
                if node1.left and node2.left:
                    queue1.append(node1.left)            
                    queue2.append(node2.left)            
    
                if node1.right and node2.right:
                    queue1.append(node1.right)            
                    queue2.append(node2.right)        
    
            return True
  • 相关阅读:
    net事件丢失解决方法
    Google排名经验谈
    动力漏洞
    Understand简明参考
    修复iReaper
    Bootstrap源码分析
    UTF8编码字节流错误小析
    OAuth2学习及DotNetOpenAuth部分源码研究
    DynamicModuleUtility对象在.net不同版本下的兼容性问题
    MediaWiKi简明安装与配置笔记
  • 原文地址:https://www.cnblogs.com/yunxintryyoubest/p/15666207.html
Copyright © 2020-2023  润新知