代码随想录算法训练营第十四天

41 阅读1分钟

226.反转二叉树

# 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 invertTree(self, root: Optional[TreeNode]) -> Optional[TreeNode]:
        self.traverse(root)
        return root
    def traverse(self,root):#本题用遍历的方法解决
        if root==None:
            return []
        root.left,root.right=root.right,root.left
        self.traverse(root.left)
        self.traverse(root.right)

101.对称二叉树

这道题要想清楚终止条件。

  1. 左子树为空,右子树不为空
  2. 左子树不为空,右子树为空
  3. 左右都为空。
    所以我们根据这三种情况,可以用两行代码进行概括
if left is None or right is None:
    return left==right
# 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 isSymmetric(self, root: Optional[TreeNode]) -> bool:
        if root is None:
            return True
        return self.check(root.left,root.right)
        
    def check(self,left,right):
        if left is None or right is None:
            return left==right
        if left.val != right.val:
            return False
        return self.check(left.right,right.left) and self.check(left.left,right.right)

111.二叉树的最小深度

这个解法更自然一些

# 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 minDepth(self, root: Optional[TreeNode]) -> int:
        return self.get_depth(root)
    def get_depth(self,root):
        if not root:
            return 0
        left_depth=self.get_depth(root.left)
        right_depth=self.get_depth(root.right)

        if root.left is None and root.right is not None:
            return 1+right_depth
        if root.right is None and root.left is not None:
            return 1+left_depth
        return 1+min(left_depth,right_depth)