108. 将有序数组转换为二叉搜索树
# 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):
"""
:type nums: List[int]
:rtype: TreeNode
"""
length=len(nums)
if not nums:
return None
root=TreeNode(nums[length//2])
root.left=self.sortedArrayToBST(nums[:length//2])
root.right=self.sortedArrayToBST(nums[length//2+1:])
return root
110. 平衡二叉树
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def isBalanced(self, root):
"""
:type root: TreeNode
:rtype: bool
"""
self.flag=True
def max_depth(root):
if not root:
return 0
ldep=max_depth(root.left)
rdep=max_depth(root.right)
if abs(ldep-rdep)>1:
self.flag=False
return max(ldep,rdep)+1
length=max_depth(root)
return self.flag
111. 二叉树的最小深度
# 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):
"""
:type root: TreeNode
:rtype: int
"""
if not root:
return 0
if not root.left and not root.right:
return 1
if not root.left:
return self.minDepth(root.right)+1
elif not root.right:
return self.minDepth(root.left)+1
else:
return min(self.minDepth(root.left),self.minDepth(root.right))+1
112. 路径总和
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
flag=False
def hasPathSum(self, root, sum):
"""
:type root: TreeNode
:type sum: int
:rtype: bool
"""
if not root:
return False
if not root.left and not root.right:
if(root.val==sum):
self.flag=True
if root.left:
self.hasPathSum(root.left,sum-root.val)
if root.right:
self.hasPathSum(root.right,sum-root.val)
return self.flag