力扣(leetcode) 108. 将有序数组转换为二叉搜索树 (递归)

题目在这:https://leetcode-cn.com/problems/convert-sorted-array-to-binary-search-tree/

思路分析:

给一个数组。转成二叉树。该二叉树有两个约束条件~
1. :每个节点的左右两个子树的高度差的绝对值不超过 1 。
2 : 左子树的值 <= 根节点的值 <= 右子树的值

而题目所给的数组是递增数组。
所以我们可以每次找到中点mid作为根节点。
左边的区间给左子树。
右边的区间给右子树。

完整代码:


def dfs(left,right):
    if left>right:
        return None
    # 先找中点
    mid = (left + right) // 2
    # 用新找到的mid构造新的树根
    root = TreeNode(nums[mid])
    # 左边给左子树,右边给右子树 (递归建立)
    root.left = dfs(left,mid -1)
    root.right = dfs(mid +1,right)
    return  root
return dfs(0,len(nums)-1)
上一篇:接口测试平台代码实现108:登录态接口-4


下一篇:5.8 2021年5月9日,是第108个母亲节