二叉树669|108|538
669修剪二叉搜索树
# 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 trimBST(self, root: Optional[TreeNode], low: int, high: int) -> Optional[TreeNode]: if not root: return if root.val < low: return self.trimBST(root.right, low, high) elif root.val > high: return self.trimBST(root.left, low, high) root.left = self.trimBST(root.left, low, high) root.right = self.trimBST(root.right, low, high) return root
108将有序数组转换为二叉搜索树
# 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 sortedArrayToBST(self, nums: List[int]) -> Optional[TreeNode]: left = 0 right = len(nums) - 1 return self.traversal(nums, left, right) def traversal(self, nums, left, right): if left > right: return mid = (right - left) // 2 + left node = TreeNode(nums[mid]) node.left = self.traversal(nums, left, mid - 1) node.right = self.traversal(nums, mid + 1, right) return node
538把二叉搜索树转换为累加树
# 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 __init__(self): self.pre = 0 def convertBST(self, root: Optional[TreeNode]) -> Optional[TreeNode]: return self.traversal(root) def traversal(self, node) -> int: if not node: return self.traversal(node.right) node.val += self.pre self.pre = node.val self.traversal(node.left) return node