刷题day(12) | 代码随想录

106 阅读1分钟

本系列文章是我刷代码随想录过程中的笔记。代码地址:leetcode

今天是我刷“代码随想录”的第十二天

今日内容

  • 226.翻转二叉树
  • 101.对称二叉树 2

leetcode 226. 翻转二叉树

这道题不难,定义一个根节点。将原树的左节点赋给新树的右节点。要注意根节点的设置。

class Solution:
    def invertTree(self, root: Optional[TreeNode]) -> Optional[TreeNode]:
        def invert(root,node):
            if not root:
                return 
            if root.left:
                node.right = TreeNode(root.left.val)
                invert(root.left, node.right)
            if root.right:
                node.left = TreeNode(root.right.val)
                invert(root.right, node.left)
        if not root:
            return None
        node = TreeNode(root.val)
        invert(root,node)
        return node

leetcode 101. 对称二叉树 与上题一样,递归这棵树,只是在判断时要注意左右节点的问题还有节点的值要相同。

class Solution:
    def isSymmetric(self, root: Optional[TreeNode]) -> bool:
        def iss(left,right):
            if not left and not right :
                return True
            if left and not right:
                return False
            if right and not left:
                return False
            if right.val != left.val:
                return False
            if right.val == left.val:
                return iss(left.left,right.right) and iss(left.right,right.left)
        if not root:
            return True
        return iss(root.left,root.right)