二叉树——根据有序数组生成平衡搜索二叉树

1. 根据有序数组生成平衡搜索二叉树

1.1. 问题

给定一个有序数组,生成一个平衡搜索二叉树。

注:平衡二叉树的定义是,对于该二叉树的每个子树,该子树的左子树高度和右子树高度差在1之内。

1.2. 代码

这道题很简单,二分递归即可。

    public TreeNode<Integer> buildBST(int[] arr) {
        return process(arr, 0, arr.length - 1);
    }

    private static TreeNode<Integer> process(int[] arr, int start, int end) {
        if (start > end) return null;
        int mid = (start + end) / 2;
        TreeNode<Integer> node = new TreeNode<>(arr[mid]);
        TreeNode<Integer> left = process(arr, start, mid - 1);
        TreeNode<Integer> right = process(arr, mid + 1, end);
        node.left = left;
        node.right = right;
        return node;
    }
posted @ 2022-05-12 09:11  迈吉  阅读(121)  评论(0)    收藏  举报