直观的就是recursive方法 每次取中间的数字做root 左右分别做
一开始用的方法用本函数递归了 就不能传index 只能传subarray 就废了空间因为要copy
后来看了一眼去年写的 应该写一个传本array和start end的helper函数来递归
public class Solution {
public TreeNode sortedArrayToBST(int[] nums) {
if ( nums == null || nums.length == 0 )
return null;
return helper ( nums, 0, nums.length - 1 );
}
public TreeNode helper ( int[] nums, int start, int end ){
if ( start < 0 || end >= nums.length || start > end )
return null;
int mid = start + ( end - start ) / 2;
TreeNode root = new TreeNode ( nums [ mid ] );
TreeNode left = helper ( nums, start, mid - 1 );
TreeNode right = helper ( nums, mid + 1, end );
root.left = left;
root.right = right;
return root;
}
}还有iterative的方法 就是需要用inorder traversal
需要用stack

本文探讨了将有序数组转换为二叉搜索树(BST)的两种方法:递归和迭代。通过使用中序遍历策略,递归方法有效地利用数组的特性构建平衡的BST。迭代方法则依赖于栈来实现相同的目标,展示了不同实现路径的巧妙之处。
316

被折叠的 条评论
为什么被折叠?



