天天看點

藍橋杯刷題JAVA(5)

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