Day 27

第95题:

给定一个整数 n,生成所有由 1 ... n 为节点所组成的 二叉搜索树 。来源:力扣(LeetCode)

输入:3
输出:
[
  [1,null,3,2],
  [3,2,null,1],
  [3,1,null,null,2],
  [2,1,3],
  [1,null,2,null,3]
]
解释:
以上的输出对应以下 5 种不同结构的二叉搜索树:

1 3 3 2 1
\ / / / \ \
3 2 1 1 3 2
/ / \ \
2 1 2 3

1、对于利用1到n这些数来组成一棵二叉搜索树,可以组成很多种不同的二叉搜索树;  

  二叉搜索树需要确定一个根节点,然后他的左子树所有节点都必须小于根节点的值,右子树所有节点都必须大于根节点的值;

  而且这个规则所有子树和它的左右子树都必须满足;

     我们遍历数组,确定一个根节点 i ,那么他的左子树就肯定时由(1…i-1)组成,右子树一定是有(i+1…n)组成;

  我们就可以递归将(1…i-1)和(i+1…n)分别组件成一棵二叉搜索树,然后将其分别作为 i 的左右子树;

  这样一直递归其实最后组成的就是

  

 

posted @ 2020-07-21 23:59  Liang-Yi  阅读(81)  评论(0编辑  收藏  举报