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
相关推荐
洛水水6 小时前
【力扣100题】18.随机链表的复制
算法·leetcode·链表
he___H12 小时前
接雨水----解
leetcode
洛水水14 小时前
【力扣100题】23. 螺旋矩阵
算法·leetcode·矩阵
Tisfy17 小时前
LeetCode 2553.分割数组中数字的数位:模拟(maybe+翻转)——java也O(1)
java·数学·算法·leetcode·题解·模拟·取模
Controller-Inversion17 小时前
42. 接雨水
数据结构·算法·leetcode
Controller-Inversion17 小时前
33. 搜索旋转排序数组
数据结构·算法·leetcode
驼同学.17 小时前
【求职季】LeetCode Hot 100 渐进式扫盲手册(Python版)
python·算法·leetcode
宵时待雨18 小时前
优选算法专题6:模拟
数据结构·c++·算法·leetcode·职场和发展
Liangwei Lin18 小时前
LeetCode 35. 搜索插入位置
数据结构·算法·leetcode
洛水水19 小时前
【力扣100题】22. 矩阵置零
算法·leetcode·矩阵