Skip to content

Commit 9bee079

Browse files
committed
add complexity analysis
1 parent eb63ffc commit 9bee079

1 file changed

Lines changed: 2 additions & 2 deletions

File tree

binary_search_tree/convert_sorted_array_to_binary_search_tree.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ convert it to a height balanced BST.
1414

1515
将二叉搜索树按中序遍历即可得升序 key 这个容易实现,但反过来由升序 key 逆推生成二叉搜索树呢?按照二叉搜索树的定义我们可以将较大的 key 链接到前一个树的最右侧节点,这种方法实现极其简单,但是无法达到本题「树高平衡-左右子树的高度差绝对值不超过1」的要求,因此只能另辟蹊径以达到「平衡二叉搜索树」的要求。
1616

17-
要达到「平衡二叉搜索树」这个条件,我们首先应从「平衡二叉搜索树」的特性入手。简单起见,我们先考虑下特殊的满二叉搜索树,满二叉搜索树的一个重要特征就是各根节点的 key 不小于左子树的 key ,而小于右子树的所有 key;另一个则是左右子树数目均相等,那么我们只要能将所给升序序列分成一大一小的左右两半部分即可满足题目要求。又由于此题所给的链表结构中仅有左右子树的链接而无指向根节点的链接,故我们只能从中间的根节点进行分析逐层往下递推直至取完数组中所有 key, 数组中间的索引自然就成为了根节点。至此递归模型初步建立。
17+
要达到「平衡二叉搜索树」这个条件,我们首先应从「平衡二叉搜索树」的特性入手。简单起见,我们先考虑下特殊的满二叉搜索树,满二叉搜索树的一个重要特征就是各根节点的 key 不小于左子树的 key ,而小于右子树的所有 key;另一个则是左右子树数目均相等,那么我们只要能将所给升序序列分成一大一小的左右两半部分即可满足题目要求。又由于此题所给的链表结构中仅有左右子树的链接而无指向根节点的链接,故我们只能从中间的根节点进行分析逐层往下递推直至取完数组中所有 key, 数组中间的索引自然就成为了根节点。由于 OJ 上方法入口参数仅有升序序列,方便起见我们可以另写一私有方法,加入`start``end`两个参数,至此递归模型初步建立。
1818

1919
### C++
2020

@@ -59,7 +59,7 @@ private:
5959
6060
### 复杂度分析
6161
62-
To be done.
62+
递归调用`middleNode`方法时每个`key`被访问一次,故时间复杂度可近似认为是 $$O(n)$$.
6363
6464
## Reference
6565

0 commit comments

Comments
 (0)