模板:
- 今日学习的文章链接和视频链接
- 自己看到题目的第一想法
- 看完代码随想录之后的想法
- 自己实现过程中遇到哪些困难
- 今日收获,记录一下自己的学习时长
题目链接:
学习链接:
题解:
法一:
# 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 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 = 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 traversal(self,nums,left,right):
if left>right:
return None
mid = left + (right-left)//2
root = TreeNode(nums[mid])
root.left = self.traversal(nums,left,mid-1)
root.right = self.traversal(nums,mid+1,right)
return root
def sortedArrayToBST(self, nums: List[int]) -> Optional[TreeNode]:
return self.traversal(nums,0,len(nums)-1)
理解了思路但是自己也写不出递归 还是写不太出来啊。
这个边界问题again
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]:
if not root:
return
self.convertBST(root.right)
root.val = self.pre + root.val
self.pre = root.val
self.convertBST(root.left)
return root
反中序遍历有点水平
如何去完成遍历的顺序改变 前序中序后序和反过来的这些 如何达成的 要记得