• Leetcode 100 相同的树


    100. 相同的树

    Difficulty: 简单

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

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

    示例 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
    

    Solution

    Language: 全部题目

    用比较笨的办法,因为先序遍历加中序遍历或者后序遍历加中序遍历可以唯一确定一颗二叉树。

    # 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:
            # 先序遍历和后序遍历可以唯一确定一颗二叉树
            return preOrderTraversal(p) == preOrderTraversal(q) and inOrderTraversal(p) == inOrderTraversal(q)
            
    def preOrderTraversal(tree):
        if not tree:
            # 注意为null的节点要向栈中添加""
            return [""]
        else:
            d = [""] if not tree.val else [tree.val]
            l = preOrderTraversal(tree.left)
            r = preOrderTraversal(tree.right)
            return d + l + r
    ​
    def inOrderTraversal(tree):
        if not tree:
            return [""]
        else:
            l = inOrderTraversal(tree.left)
            d = [""] if not tree.val else [tree.val]
            r = inOrderTraversal(tree.right)
            return l + d + r
    
  • 相关阅读:
    使用phpspider抓取网站文章
    laravel5中使用faker生成模拟数据
    记录一次apache服务器启动报错和解决方法
    记录一次手误删除了root用户的家目录
    Python+selenium+PIL截屏后,裁剪图片不准确(Win10)
    Git学习笔记(五)
    Git学习笔记(一)
    Git学习笔记(四)
    Git学习笔记(三)
    Git学习笔记(二)
  • 原文地址:https://www.cnblogs.com/swordspoet/p/13984881.html
Copyright © 2020-2023  润新知