1 问题
将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点的左右两个子树的高度差的绝对值不超过1。
2 方法
采用递归的方法找到root结点,以及左子树和右子树。
代码清单 1
class Solution(object): def sortedArrayToBST(self, nums): """ :type nums: List[int] :rtype: TreeNode """ def to_bst(nums, start, end): if start > end: return None mid = (start+end)//2 node = TreeNode(nums[mid]) node.left = to_bst(nums, start, mid-1) node.right = to_bst(nums, mid+1,end) return node return to_bst(nums, 0, len(nums) - 1) |
3 结语
针对解决将一个有序数组转化成二叉搜索数问题,提出使用递归的方法,通过实验,证明该方法是有效的。