• leetcode101对称二叉树


    题目如下

    给定一个二叉树,检查它是否是镜像对称的。
    
    例如,二叉树 [1,2,2,3,4,4,3] 是对称的。
    
        1
       / 
      2   2
     /  / 
    3  4 4  3
    但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的:
    
        1
       / 
      2   2
          
       3    3
    说明:
    
    如果你可以运用递归和迭代两种方法解决这个问题,会很加分。
    

    1. DFS(深度优先搜索)

    使用递归的方法对比左右两个子树的节点是否相等

    class Solution(object):
        def isSymmetric(self, root):
            """
            :type root: TreeNode
            :rtype: bool
            """
            return self.check(root.left, root.right)
    
    
        def check(self, Node1, Node2):
            if Node1 == None and Node2 == None:
                return True
            if Node1 == None or Node2 == None:
                return False
            return Node1.val == Node2.val and self.check(Node1.left, Node2.right) and self.check(Node1.right, Node2.left)
    

    一个递归加条件判断就写完了,有什么好说的,我带你们打哈哈哈哈哈哈哈。

    2.BFS(广度优先搜索)

    BFS我使用一个队列来辅助实现
    每次以二为单位进行出队列,然后判断我们出队列的两个节点是否有一个为空,还是是否都为空,还有值是否相等,然后将这两个节点的左右 右左节点分别入队,循环条件为队列不为空,突然想到这个好像拿栈实现也可以。
    代码如下

    class Solution(object):
        def isSymmetric(self, root):
            """
            :type root: TreeNode
            :rtype: bool
            """
            queue = []
            if not root:
                return True
            queue.append(root.left)
            queue.append(root.right)
            while queue:
                left_node = queue.pop(0)
                right_node = queue.pop(0)
                if not left_node and not right_node:
                    continue
                if not left_node or not right_node:
                    return False
                if left_node.val != right_node.val:
                    return False
                queue.append(left_node.left,)
                queue.append(right_node.right)
                queue.append(left_node.right)
                queue.append(right_node.left)
            return True
    
  • 相关阅读:
    LeetCode No944. 删列造序
    LeetCode No38. 外观数列
    LeetCode No39. 组合总和
    leetcode 643. Maximum Average Subarray I 子数组最大平均数 I
    leetcode 3. Longest Substring Without Repeating Characters 无重复字符的最长子串
    go 的day 10
    mysqlinsert
    oracle sql经验
    数据同步思路
    Redis 扫描scan Anthony
  • 原文地址:https://www.cnblogs.com/yfc0818/p/11072603.html
Copyright © 2020-2023  润新知