前言
每日刷题,从己做起。
一、最大二叉树
class Solution:
def maxerchashu(self, nums:List[int]) -> Treenode:
if not nums:
return None
max_value = max(nums)
index = nums.index(max_value)
root = Treenode(max_value)
left = nums[:index]
right = nums[index + 1:]
root_left = self.maxerchashu(left)
root_right = self.maxerchashu(right)
return root
二、合并二叉树
class Solution:
def mergeerchashu(self, root1:Treenode, root2: Treenode) -> Treenode:
if not root1:
return root2
if not root2:
return root1
#中
root1.val += root2.val
#左
root1.left = self.mergeerchashu(root1.left, root2.left)
#右
root1.right = self.mergeerchashu(root1.right, root2.right)
return root
三、二叉搜索树
class Solution:
def searcherchashu(self, root: Treenode, val:int):
if not root or root.val == va;:
return root
if root.val > val:
return searcherchashu(root.left, val)
if root.val < val:
return searcherchashu(root.right, val)
四、验证搜索二叉树
搜索二叉树更适合中序。
class Solution:
def isvalid(self, root: Treenode):
curmax = -float("INF")
def __isvalid(root: Treenode):
nonlocal curmax
if not root:
return True
is_left_valid = __isvalid(root.left)
if curmax < root.val:
curmax = root.val
else:
return False
is_right_valid = __isvalid(root.right)
return is_left_valid and is_right_valid
return __isvalid(root)
总结
加油。