108. Convert Sorted Array to Bin

2018-02-27  本文已影响3人  衣介书生

题目分析

原题链接,登录 LeetCode 后可用
这道题目是让我们根据一个有序数组生成一棵二分查找树。二分查找树的特点是:左孩子比父节点小,右孩子比父节点大。二分查找树还有一个特点就是“中序遍历”可以让结点有序。

代码

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    
    private TreeNode build(int[] nums, int start, int end) {
        // 注意结束条件
        if(start > end) {
            return null;
        }
        TreeNode node = new TreeNode(nums[(start + end) / 2]);
        node.left = build(nums, start, (start + end) / 2 - 1);
        node.right = build(nums, (start + end) / 2 + 1, end);
        return node;
    }
    
    public TreeNode sortedArrayToBST(int[] nums) {
        if(nums == null) {
            return null;
        }
        return build(nums, 0, nums.length - 1);
    }
}
上一篇下一篇

猜你喜欢

热点阅读