leetcode-将有序数组转换为二叉搜索树

108. 将有序数组转换为二叉搜索树

二叉搜索树的定义:

首先它是有序树

  • 若其左子树不空,则左子树上所有节点的值均小于它的根节点的值
  • 若其右子树不空,则右子树上所有节点的值均大于它的根节点的值
  • 它的左、右子树也分别为二叉搜索树

此题的题目中还强调了一点,高度平衡,这就需要知道平衡二叉树的概念:

  • 左子树和右子树的高度之差的绝对值不超过1
  • 左右子树都是平衡二叉树
  • 左右子树都是二叉搜索树
python 复制代码
# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:
    def sortedArrayToBST(self, nums: List[int]) -> Optional[TreeNode]:
        def traversal(nums, left, right):
            if left > right:
                return None
            mid = (left + right) // 2
            root = TreeNode(nums[mid])
            root.left = traversal(nums, left, mid - 1)
            root.right = traversal(nums, mid + 1, right)
            return root
        root = traversal(nums, 0, len(nums) - 1)
        return root
相关推荐
玖玥拾13 小时前
LeetCode 88 合并两个有序数组
算法·leetcode
Hi李耶15 小时前
【LeetCode】541.反转字符串 II
算法·leetcode·职场和发展
白白白小纯19 小时前
每日算法day3—回文链表,链表分割
c语言·数据结构·算法·leetcode
zander25820 小时前
35. 搜索插入位置:从边界语义理解二分查找
数据结构·算法·leetcode
yyds_yyd_1008621 小时前
3731. 找出缺失的元素(2026.08.04)
c++·leetcode
lueluelue471 天前
LeetCode:链表
算法·leetcode·链表
橘子汽水1681 天前
Leetcode 23,543合并K个升序链表,二叉树的直径
算法·leetcode·链表
Re.不晚2 天前
挑战做100道力扣算法- DAY1
算法·leetcode·职场和发展
青山木2 天前
Hot 100 --- 搜索插入位置
java·数据结构·算法·leetcode
星轨初途2 天前
LeetCode 热题 100——day2 字母异位词分组
c++·算法·leetcode