翻转二叉树
https://leetcode.cn/problems/invert-binary-tree/description/
思路
采用递归的思路
可以前序遍历
和后序遍历
,不能使用中序遍历
class Solution : def invert ( self, cur) : if not cur: return curcur. left, cur. right = cur. right, cur. left self. invert( cur. left) self. invert( cur. right) def invertTree ( self, root: Optional[ TreeNode] ) - > Optional[ TreeNode] : self. invert( root) return root
对称二叉树
https://leetcode.cn/problems/symmetric-tree/description/
思路
使用递归
,后序遍历
判断一边的左孩子
是否等于另一边的右孩子
,一边的右孩子
是否等于另一边的左孩子
class Solution : def symmetric ( self, left, right) : if left and not right: return False elif not left and right: return False elif not left and not right: return True elif left. val != right. val: return False res1 = self. symmetric( left. left, right. right) res2 = self. symmetric( left. right, right. left) res = True if res1 and res2 else False return resdef isSymmetric ( self, root: Optional[ TreeNode] ) - > bool : if self. symmetric( root. left, root. right) : return True else : return False
二叉树的最大深度
https://leetcode.cn/problems/maximum-depth-of-binary-tree/description/
思路
class Solution : def maxDepth ( self, root: Optional[ TreeNode] ) - > int : height = 1 cur = rootif not cur: return 0 leftHeight = self. maxDepth( cur. left) rightHeight = self. maxDepth( cur. right) height = height + max ( leftHeight, rightHeight) return height