程序员面试金典(LeetCode)-面试题04.02(最小高度树)

    技术2025-04-16  11

    最小高度树

    题目描述 算法思想

    做这道题的目的,其实就是再回顾以下数据结构中学到的知识。 什么是搜索二叉树,对于树中的所有子树都有,左子树上的值都小于根节点的值,右子树上的值都大于根节点上的值,并且左右子树的高度差不超过1。树的中序遍历可以得到一个升序序列。

    依据此思想建树。 因为所给的列表,本身就是一个升序序列。所以我们要达到,以上条件,则就从列表的中间节点作为根节点即可。所以利用递归,构造节点时,以中间节点作为根节点,然后左子树右子树再分别在剩下的左右部分分别执行上诉操作。

    代码实现

    # Definition for a binary tree node. # class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # self.right = None class Solution: def sortedArrayToBST(self, nums: List[int]) -> TreeNode: l = len(nums) if l == 0: return mid = l // 2 root = TreeNode(nums[mid]) root.left = self.sortedArrayToBST(nums[:mid]) root.right = self.sortedArrayToBST(nums[mid+1:]) return root
    Processed: 0.009, SQL: 9