Skip to content

Update 03.04.01-Binary-Search-Tree.md #330

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions docs/ch03/03.04/03.04.01-Binary-Search-Tree.md
Original file line number Diff line number Diff line change
Expand Up @@ -55,9 +55,9 @@ class Solution:
### 2.3 二叉搜索树的查找算法分析

- 二叉搜索树的查找时间复杂度和树的形态有关。
- 在最好情况下,二叉搜索树的形态与二分查找的判定树相似。每次查找都可以所辖一半搜索范围。查找路径最多从根节点到叶子节点,比较次数最多为树的高度 $\log_2 n$。在最好情况下查找的时间复杂度为 $O(\log_2 n)$。
- 在最好情况下,二叉搜索树的形态与二分查找的判定树相似。每次查找都可以缩小一半搜索范围。查找路径最多从根节点到叶子节点,比较次数最多为树的高度 $\log_2 n$。在最好情况下查找的时间复杂度为 $O(\log_2 n)$。
- 在最坏情况下,二叉搜索树的形态为单支树,即只有左子树或者只有右子树。每次查找的搜索范围都缩小为 $n - 1$,退化为顺序查找,在最坏情况下时间复杂度为 $O(n)$。
- 在平均情况下,二叉搜索树的平均查找长度为 $ASL = [(n + 1) / n] * /log_2(n+1) - 1$。所以二分搜索树的查找平均时间复杂度为 $O(log_2 n)$。
- 在平均情况下,二叉搜索树的平均查找长度为 $ASL = [(n + 1) / n] * log_2(n+1) - 1$。所以二分搜索树的查找平均时间复杂度为 $O(log_2 n)$。

## 3. 二叉搜索树的插入

Expand All @@ -72,7 +72,7 @@ class Solution:
1. 如果 $val < root.val$,则递归将值为 $val$ 的节点插入到左子树中。
2. 如果 $val > root.val$,则递归将值为 $val$ 的节点插入到右子树中。

> **注意**:二叉搜索树不允许存在重复节点,否则将违反其定义。因此,如果带插入节点在树中已存在,则不执行插入操作,直接返回。
> **注意**:二叉搜索树不允许存在重复节点,否则将违反其定义。因此,如果待插入节点在树中已存在,则不执行插入操作,直接返回。

### 3.2 二叉搜索树的插入代码实现

Expand Down Expand Up @@ -127,9 +127,9 @@ class Solution:
root.right = self.insertIntoBST(root.right, val)
return root
def buildBST(self, nums) -> TreeNode:
root = TreeNode(val)
root = None
for num in nums:
self.insertIntoBST(root, num)
root = self.insertIntoBST(root, num)
return root
```

Expand Down