1、
669. Trim a Binary Search Tree
这种情况要把3的左接上2返回的
class Solution:
def trimBST(self, root: TreeNode, low: int, high: int) -> TreeNode:
if root is None:
return None
if root.val < low:
#剪枝
return self.trimBST(root.right, low, high)
if root.val > high:
return self.trimBST(root.left, low, high)
root.left =
root.right =
# 接入符合条件的孩子
return root
2、
108. Convert Sorted Array to Binary Search Tree
凡是构造二叉树的题目,都要用pre order: middle -> left -> right
# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution(object):
def sortedArrayToBST(self, nums):
"""
:type nums: List[int]
:rtype: TreeNode
"""
# 还是有root的
root = self.traversal(nums, 0, len(nums) - 1)
return root
def traversal(nums, left, right):
# 当数组不存在时
if (left > right):
return None
# 中点: 注意这里有操作的
mid = (left+right) / 2
# 要加root
root = TreeNode(nums[mid])
# []
# 构造左子树
root.left = traversal(nums, left, mid -1 )
# 构造柚子树
root.right = traversal(nums, mid + 1, right )
return root
跑出来有点问题,这个root,可以回头再改改
3、538
538. Convert BST to Greater Tree
遍历顺序注意:⚠️
可以从图看出
# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = right
class Solution(object):
def convertBST(self, root):
"""
:type root: TreeNode
:rtype: TreeNode
"""
# 这种global的以后可以定义成self
#global pre = 0
self.pre = 0
self.traversal(root)
return root
def traversal(self, cur): #记得这里加self,why?
if cur is None:
return
# 右中左
self.traversal(cur.right)
# 中间
cur.val = self.pre + cur.val
self.pre = cur.val
# 左
self.traversal(cur.left)