108.将有序数组转为二叉搜索树
这个题很好的考察了中序遍历的性质 答案不唯一,但是答案要求左右子树的高度差不超过1, 那么,我们可以用中间的数作为根节点,因为二叉搜索树的中序遍历一定是一个升序数组
class Solution {
public TreeNode
sortedArrayToBST(int[] nums
) {
if(nums
==null
) return null
;
return createNode(nums
, 0, nums
.length
-1);
}
private TreeNode
createNode(int[] nums
,int l
,int r
)
{
if(l
>r
) return null
;
int m
= l
+((r
-l
)>>1);
TreeNode root
= new TreeNode(nums
[m
]);
root
.left
= createNode(nums
,l
,m
-1);
root
.right
= createNode(nums
,m
+1,r
);
return root
;
}
}
转载请注明原文地址: https://mac.8miu.com/read-486146.html