diff --git a/docs/ch03/03.04/03.04.01-Binary-Search-Tree.md b/docs/ch03/03.04/03.04.01-Binary-Search-Tree.md index d0e4103..c0d7c71 100644 --- a/docs/ch03/03.04/03.04.01-Binary-Search-Tree.md +++ b/docs/ch03/03.04/03.04.01-Binary-Search-Tree.md @@ -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. 二叉搜索树的插入 @@ -72,7 +72,7 @@ class Solution: 1. 如果 $val < root.val$,则递归将值为 $val$ 的节点插入到左子树中。 2. 如果 $val > root.val$,则递归将值为 $val$ 的节点插入到右子树中。 -> **注意**:二叉搜索树不允许存在重复节点,否则将违反其定义。因此,如果带插入节点在树中已存在,则不执行插入操作,直接返回。 +> **注意**:二叉搜索树不允许存在重复节点,否则将违反其定义。因此,如果待插入节点在树中已存在,则不执行插入操作,直接返回。 ### 3.2 二叉搜索树的插入代码实现 @@ -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 ```