今日leetcode 四题:
654.最大二叉树
617.合并二叉树
700.二叉搜索树中的搜索
98.验证二叉搜索树
小结:
- 今天也是巧合下复习了堆排序和递归详解
- 再次遇到 return and 还是 or:如果是and,两个成立才成立,and 遇到 None立马返回None;如果是 or,一个成立就成立,or 遇到非None,立马返回非None值。
654.最大二叉树
*题外话:复习一下堆,之前写过,现在还是有点不会写,尴尬。* 这道题难度不大,要读题,算法人家都写出来了!速读只能读小说。 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/a1712074721949bca092ca8633aa6841.png)- 二叉堆/最小堆/堆排序:
import heapq
heapq.heapify(pq)
heapq.heappop(pq)
heapq.heappush(pq)
def constructMaximumBinaryTree(self, nums: List[int]) -> Optional[TreeNode]:
def digui(left,right):
if left>right:
return
max_inx = left
for i in range(left+1,right+1):
if nums[i] > nums[max_inx]:
max_inx = i
node = TreeNode(nums[max_inx])
node.left = digui(left,max_inx-1)
node.right= digui(max_inx+1,right)
return node
return digui(0,len(nums)-1)
617 合并二叉树
简单题贼快113.二叉搜索树中的搜索
98.验证二叉搜索树
目前的算法逻辑是不对的,但是有77/85,先放过,明天再改,嘿嘿
def buildTree(inorder, postorder):