1.将有序数组转换为二叉搜索树
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode() {}
* TreeNode(int val) { this.val = val; }
* TreeNode(int val, TreeNode left, TreeNode right) {
* this.val = val;
* this.left = left;
* this.right = right;
* }
* }
*/
class Solution {
public TreeNode sortedArrayToBST(int[] nums) {
if(nums.length == 0)
return null;
else {
return temp(nums, 0, nums.length - 1);
}
}
public TreeNode temp(int[] nums, int beg, int end) {
if(beg > end)
return null;
int mid = beg + (end - beg) / 2;
TreeNode root = new TreeNode(nums[mid]);
root.left = temp(nums, beg, mid - 1);
root.right = temp(nums, mid + 1, end);
return root;
}
}
经验: 本质来说就是一个中序遍历,只是卡在以什么样的形式返回值上,一直试图利用void来进行tree的连接,事实证明是直接返回节点代码能够更加的高效简洁。
PS:今日一直在改imageio的线程存储bug,导致没有太多的时间刷题,明日补上!