669. 修剪二叉搜索树
修剪二叉搜索树
思路
108. 将有序数组转换为二叉搜索树
class Solution:
def sortedArrayToBST(self, nums: List[int]) -> Optional[TreeNode]:
root=self.traversal(nums,0,len(nums)-1)
return root
def traversal(self,nums,left,right):
if left>right:
return None
mid=(left+right)//2
root=TreeNode(nums[mid])
root.left=self.traversal(nums,left,mid-1)
root.right=self.traversal(nums,mid+1,right)
return root
这就是构造平衡二叉搜索树,就是不停的重复
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]:
root=self.traversal(root)
return root
def traversal(self,root):
if not root:
return
self.traversal(root.right)
root.val+=self.pre
self.pre = root.val
self.traversal(root.left)
return root