二叉树——根据有序数组生成平衡搜索二叉树
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;
}
作者: 迈吉
出处: https://www.cnblogs.com/stepfortune/
关于作者:迈吉
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出, 原文链接 如有问题, 可邮件(showable@qq.com)咨询.
浙公网安备 33010602011771号