【LeetCode with Python】 108. Convert Sorted Array to Binary Search Tree

题目

原题页面:https://leetcode.com/problems/convert-sorted-array-to-binary-search-tree/
本文地址:http://leetcode.xnerv.wang/convert-sorted-array-to-binary-search-tree/
题目类型:Tree, Depth-first Search
难度评价:Medium
类似题目:(M) Convert Sorted List to Binary Search Tree

Given an array where elements are sorted in ascending order, convert it to a height balanced BST.


分析

用递归的方法,每次选择当前子序列的中点作为子树的root,然后再递归对左边子序列和右边子序列进行处理。
原题中标注为深度搜索DFS。这里是构建二叉树,构建的顺序类似于二叉树的先序遍历。由于树是一种特殊的图,因此二叉树的先序遍历其实就是图的DFS,而层次遍历就是图的BFS。


代码

class Solution:

    def doSortedArrayToBST(self, num, start, end):
        if start > end:
            return None
        mid = start + (end - start) / 2
        root = TreeNode(num[mid])
        root.left = self.doSortedArrayToBST(num, start, mid - 1)
        root.right = self.doSortedArrayToBST(num, mid + 1, end)
        return root

    # @param num, a list of integers
    # @return a tree node
    def sortedArrayToBST(self, num):
        len_num = len(num)
        if 0 == len_num:
            return None
        return self.doSortedArrayToBST(num, 0, len_num - 1)

results matching ""

    No results matching ""