将有序数组转换为二叉搜索树
题解思路: 二叉搜索树(Binary Search Tree)是指一棵空树或具有如下性质的二叉树: 若任意节点的左子树不空,则左子树上所有节点的值均小于它的根节点的值 若任意节点的右子树不空,则右子树上所有节点的值均大于它的根节点的值 任意节点的左、右子树也分别为二叉搜索树 没有键值相等的节点 基于以上性质,我们可以得出一个二叉搜索树的特性:二叉搜索树的中序遍历结果为递增序列。 那么现在题目给了我们一个递增序列,要求我们构造一棵二叉搜索树,就是要我们实现这一特性的逆过程。 递归设计 函数作用:通过上述解题过程我们可以明确该问题的子问题是:构造树的每个节点以及该节点的左右子树。因此,递归函数的作用很明显: 选取要构造关系的节点并创建它 构造该节点的左子树 构造该节点的右子树 函数的输入为递增数组,函数的返回为完成构造的节点。 何时结束 当输入的递增数组为空时,只能构成一棵空树,此时返回空节点。 何时调用 当构造节点的左右子树时,对递增数组进行拆分并进行递归调用。 实现 Java /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */