将有序数组转换为二叉搜索树:
PHP 84ms:
首先创建一个递归的二叉树生成function,然后return就行。核心就在创建二叉树上。由于给定的是一个排序数组,因此使用折半的方式来生成树。测试用例有问题,因为深度优先遍历有三个模式,因此测试用例的答案和实际答案不符合,所以会有一定的不同,但是提交没有问题。
/**
* Definition for a binary tree node.
* class TreeNode {
* public $val = null;
* public $left = null;
* public $right = null;
* function __construct($value) { $this->val = $value; }
* }
*/
class Solution {
/**
* @param Integer[] $nums
* @return TreeNode
*/
function sortedArrayToBST($nums) {
$len = count($nums);
if($len == 0){
return null;
}
return $this->createTree($nums,0,$len-1);
}
function createTree($nums,$left,$right){
if($left > $right){
return null;
}
if($left == $right){
return new TreeNode($nums[$left]);
}
$mid = ceil(($left + $right)/2);
$root = new TreeNode($nums[$mid]);
$root->left = $this->createTree($nums,$left,$mid-1);
$root->right = $this->createTree($nums,$mid+1,$right);
return $root;
}
}