leetcode-4.29[111. 二叉樹的最小深度、108. 將有序數組轉換爲二叉搜索樹、110. 平衡二叉樹](python解法)

題目1

在這裏插入圖片描述

題解1

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

class Solution:
    def minDepth(self, root: TreeNode) -> int:
        if root is None:
            return 0
        # 考慮左右節點只有其中一個的情況
        if not root.left:
            return 1 + self.minDepth(root.right)
        if not root.right:
            return 1 + self.minDepth(root.left)
        # 左右節點都在取最小值
        return 1 + min(self.minDepth(root.right), self.minDepth(root.left))

附上題目鏈接

題目2

在這裏插入圖片描述

題解2

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

class Solution:
    def sortedArrayToBST(self, nums: List[int]) -> TreeNode:
        if not nums:
            return None
        mid = len(nums)//2
        root = TreeNode(nums[mid])
        root.left = self.sortedArrayToBST(nums[:mid])
        root.right = self.sortedArrayToBST(nums[mid+1:])
        return root

附上題目鏈接

題目3

在這裏插入圖片描述

題解3

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

class Solution:

    def Depth(self, root: TreeNode) -> bool:
        if root is None:
            return 0
        return 1 + max(self.Depth(root.left),self.Depth(root.right))

    def isBalanced(self, root: TreeNode) -> bool:
        if root is None:
            return True
        if abs(self.Depth(root.left) - self.Depth(root.right)) > 1:
            return False
        return self.isBalanced(root.left) and self.isBalanced(root.right)

附上題目鏈接

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章