题目解析
本题第一行输入是一个乱序的序列,但是该序列元素将用于构建一个平衡满二叉搜索树,因此我们需要将第一行输入的序列进行升序,得到平衡满二叉搜索树对应的有序序列。
由于给定的二叉搜索树是平衡的,即每个根:左子树节点数 == 右子树节点数,因此假设一个树的节点索引范围是[L, R],那么该树的根节点索引必然为:(L+R)/ 2,整除
当要查找的值target满足下面条件时:
当前子树对应的查找范围是 [L, R],当前子树的根索引为rootIdx
- target > 当前根值,则target处于当前根的右子树,此时右子树范围 [rootIdx + 1, R]
- taget < 当前根值,则target处于当前根的左子树,此时左子树范围 [L, rootIdx - 1]
- target == 当前根值,则找到target,结束查找
上面查找过程中,可能最后找不到target,即查找范围会发生越界 L > R,此时也需要结束查找。