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,導緻沒有太多的時間刷題,明日補上!