分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请轻击人工智能教程大家好!欢迎来到我的网站! 人工智能被认为是一种拯救世界、终结世界的技术。毋庸置疑,人工智能时代就要来临了,科… 继续阅读 前言https://www.captainai.net/troubleshooter
package live.every.day.ProgrammingDesign.CodingInterviewGuide.BinaryTree;
import live.every.day.ProgrammingDesign.CodingInterviewGuide.BinaryTree.BinaryTreePrinter2.Node;
import static live.every.day.ProgrammingDesign.CodingInterviewGuide.BinaryTree.BinaryTreePrinter2.print;
/**
* 通过有序数组生成平衡搜索二叉树
*
* 【题目】
* 给定一个有序数组sortArr,已知其中没有重复值,用这个有序数组生成一棵平衡搜索二叉树,并且该搜索二叉树中序遍历的结果与
* sortArr一致。
*
* 【难度】
* 简单
*
* 【解答】
* 本题的递归过程比较简单,用有序数组最中间的数生成搜索二叉树的头节点,然后用这个数左边的数生成左子树,用右边的数生成右子
* 树即可。
* 全部过程请参看如下代码中的generateTree方法。
*
* @author Created by LiveEveryDay
*/
public class GenerateBalancedBSTBySortedArray {
public static Node generateTree(int[] sortedArr) {
if (sortedArr == null) {
return null;
}
return generate(sortedArr, 0, sortedArr.length - 1);
}
private static Node generate(int[] sortedArr, int start, int end) {
if (start > end) {
return null;
}
int mid = (start + end) >> 1;
Node root = new Node(sortedArr[mid]);
root.left = generate(sortedArr, start, mid - 1);
root.right = generate(sortedArr, mid + 1, end);
return root;
}
public static void main(String[] args) {
int[] a = {1, 2, 3, 4, 5, 6, 7, 8};
Node root = generateTree(a);
print(root);
}
}
// ------ Output ------
/*
4
/ \
2 6
/ \ / \
1 3 5 7
\
8
*/