归并排序:
#伪代码
MERGE-SORT(A,p,r)
1 if p < r
2 q = [(p+r)/2]
3 MERGE-SORT(A,p,q)
4 MERGE-SORT(A,q+1,r)
5 MERGE(A,p,q,r)
例题
将有序数组转化为二叉搜索树
高度平衡的二叉树:
class Solution:
def sortedArrayToBST(self,nums:List[int]) -> TreeNode:
if not nums:
return None
else:
mid = int(len(nums)/2)
return TreeNode(nums[mid],self.sortedArrayToBST(nums[:mid]))
self.sortedArrayToBST(nums[mid+1:])
从中序与后序遍历序列构造二叉树
class Solution:
def buildTree(self,inorder:List[int],postorder:List[int]) -> TreeNode:
self.map = {j : i for i,j in enumerate(inorder)}#得到值及其对应的索引
self.postorder = postorder
return self.func(0,len(postorder)-1)
def func(self,left,right):
if left > right:
return None
else:
value = self.postorder.pop()
index = self.map[value]
right_node = self.func(index+1,right)
left_node = self.func(left,index-1)
return TreeNode(value,left_node,right_node)
1450

被折叠的 条评论
为什么被折叠?



