将有序数组转换为二叉搜索树 2025-07-31 作者 Y Y 1234 字 本文最后编辑于 前,其中的内容可能需要更新。 将有序数组转换为二叉搜索树 题目 1234567891011给你一个整数数组 nums ,其中元素已升序排列,请你将其转换为一棵二叉搜索树。示例 1:输入:nums = [-10,-3,0,5,9]输出:[0,-3,9,-10,null,5]解释:[0,-10,5,null,-3,null,9] 也将被视为正确答案:示例 2:输入:nums = [1,3]输出:[3,1]解释:[1,null,3] 和 [3,1] 都是高度平衡二叉搜索树。 解法 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051思路:将数组中间的值作为根节点的值,每次根据数组中间值的下标分割成两个数组进行递归代码:class TreeNode{ public $val = null; /** * @var TreeNode|null */ public $left = null; /** * @var TreeNode|null */ public $right = null; function __construct($val = 0, $left = null, $right = null) { $this->val = $val; $this->left = $left; $this->right = $right; }}/** * @param Integer[] $nums * * @return TreeNode */function sortedArrayToBST($nums){ return $this->node($nums, 0, count($nums) - 1);}public function node($nums, $lo, $hi){ if ($lo > $hi) { return null; } // 获取数组中间的值 $mid = $lo + intdiv($hi - $lo, 2); $root = new TreeNode($nums[$mid]); // 递归,左节点从0到mid,右节点从mid到末尾 $root->left = $this->node($nums, $lo, $mid - 1); $root->right = $this->node($nums, $mid + 1, $hi); return $root;} < 上一篇 下一篇 >