【力扣100】108.将有序数组转化为二叉搜索树

添加链接描述

# 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 arraytobst(left,right):
            if left>right:
                return None
            if left==right:
                return TreeNode(nums[left],None,None)
            else:
                mid=(left+right)//2
                root=TreeNode(nums[mid])
                root.left=arraytobst(left,mid-1)
                root.right=arraytobst(mid+1,right)
                return root
        return arraytobst(0,len(nums)-1)

思路:

  1. 递归构造
  2. 踢出的条件if left>right:是为了root.left=arraytobst(left,mid-1)这一句
  3. if left==right:是为了当只有一个节点时,直接返回

你可能感兴趣的:(leetcode,算法)