题目:给定一个有序数组sortArr,已知其中没有重复值,用这个有序数组生成一颗平衡搜索二叉树,并且该搜索二叉树中序遍历的结果与sortArr一致
思路:用有序数组最中间的数生成搜索二叉树的头节点,然后用这个数左边的树生成左子树,用右边的数生成右子树即可
class Node:
def __init__(self,value):
self.value = value
self.left = None
self.right = None
def generateTree(arr):
if arr == None or len(arr)==0:
return None
return generate(arr,0,len(arr)-1)
def generate(arr,start,end):
if start > end:
return None
mid = int((start+end)/2)
node = Node(arr[mid])
node.left = generate(arr,start,mid-1)
node.right = generate(att,mid+1,end)
return node