P68. 用有序数组构建二叉搜索树

leetcode 108 lintcode 177 DFS 讨论

温馨提示:您没有权限查看当前视频。 立即购买观看视频

描述

这个题目说的是,给你一个递增排序的数组,你要用它构建一棵平衡的二叉搜索树。所谓平衡,是指对于这棵二叉搜索树上的每一个节点,它左右子树的高度差不能大于 1。

比如说,给你的递增数组是:

1, 2, 4, 8, 16

一种可能的构建方式是:

   4
  / \
 1   8
  \   \
   2  16

首先,这是一棵二叉搜索树。对于任意的一个节点,它左子树上的数字都小于它;右子树上的数字都大于它。

另外这棵树是平衡的,因为任何一个节点的左右子树高度差都不大于 1 。

当然,这不是唯一的构建方式。比如也可以构建成:

     4
    / \
   2   8
  /     \
 1      16

我们只需要返回任意一个平衡的二叉搜索树即可。

关于 AlgoCasts

AlgoCasts 旨在用心做好每一个算法讲解视频。每个视频包含两个部分:题目的剖析讲解以及编码,力求在讲解清楚到位的基础上,尽可能地保持视频精简短小,让大家可以在碎片时间里进行学习,并收获这些算法题背后的思想与乐趣。