本系列文章是我刷代码随想录过程中的笔记。代码地址: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)