欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Leetcode —— 面试题 04.02. 最小高度树(Python)

程序员文章站 2022-05-20 16:46:05
...

给定一个有序整数数组,元素各不相同且按升序排列,编写一个算法,创建一棵高度最小的二叉搜索树。

示例:

给定有序数组: [-10,-3,0,5,9],

一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树:

      0 
     / \ 
   -3   9 
   /   / 
 -10  5 

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/minimum-height-tree-lcci
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

# Definition for a binary tree node.
# class TreeNode:   # TreeNode类定义树的结点
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None

class Solution:
    def sortedArrayToBST(self, nums: List[int]) -> TreeNode:
        if not nums:  # 如果列表为空。返回空树None
            return None
        def sortBst(nums,i,j):  # 定义递归函数
            if i == j:  # 递归停止条件
                return TreeNode(nums[i])
            if i>j:  # 递归停止条件
                return None
            mid = (i+j)//2  # 找到当前nums列表中的根结点
            root = TreeNode(nums[mid])  # 构建根结点
            root.left = sortBst(nums,i,mid-1)  # 构建左子树
            root.right = sortBst(nums,mid+1,j)  # 构建右子树
            return root  # 返回根结点
        return sortBst(nums,0,len(nums)-1)
相关标签: 深度优先遍历