Update the comments in

binary_search_tree and avl_tree.
This commit is contained in:
Yudong Jin
2023-01-17 01:53:12 +08:00
parent 8e2e95a511
commit 2336fe1d50
14 changed files with 70 additions and 68 deletions

View File

@ -203,10 +203,10 @@ TreeNode *search(avlTree *tree, int val) {
// 循环查找,越过叶结点后跳出
while (cur != NULL) {
if (cur->val < val) {
// 目标结点在 root 的右子树中
// 目标结点在 cur 的右子树中
cur = cur->right;
} else if (cur->val > val) {
// 目标结点在 root 的左子树中
// 目标结点在 cur 的左子树中
cur = cur->left;
} else {
// 找到目标结点,跳出循环

View File

@ -53,11 +53,11 @@ TreeNode *search(binarySearchTree *bst, int num) {
TreeNode *cur = bst->root;
// 循环查找,越过叶结点后跳出
while (cur != NULL) {
// 目标结点在 root 的右子树中
if (cur->val < num) {
// 目标结点在 cur 的右子树中
cur = cur->right;
} else if (cur->val > num) {
// 目标结点在 root 的左子树中
// 目标结点在 cur 的左子树中
cur = cur->left;
} else {
// 找到目标结点,跳出循环
@ -81,10 +81,10 @@ TreeNode *insert(binarySearchTree *bst, int num) {
}
pre = cur;
if (cur->val < num) {
// 插入位置在 root 的右子树中
// 插入位置在 cur 的右子树中
cur = cur->right;
} else {
// 插入位置在 root 的左子树中
// 插入位置在 cur 的左子树中
cur = cur->left;
}
}

View File

@ -43,9 +43,9 @@ public:
TreeNode* cur = root;
// 循环查找,越过叶结点后跳出
while (cur != nullptr) {
// 目标结点在 root 的右子树中
// 目标结点在 cur 的右子树中
if (cur->val < num) cur = cur->right;
// 目标结点在 root 的左子树中
// 目标结点在 cur 的左子树中
else if (cur->val > num) cur = cur->left;
// 找到目标结点,跳出循环
else break;
@ -64,9 +64,9 @@ public:
// 找到重复结点,直接返回
if (cur->val == num) return nullptr;
pre = cur;
// 插入位置在 root 的右子树中
// 插入位置在 cur 的右子树中
if (cur->val < num) cur = cur->right;
// 插入位置在 root 的左子树中
// 插入位置在 cur 的左子树中
else cur = cur->left;
}
// 插入结点 val

View File

@ -193,10 +193,10 @@ namespace hello_algo.chapter_tree
// 循环查找,越过叶结点后跳出
while (cur != null)
{
// 目标结点在 root 的右子树中
// 目标结点在 cur 的右子树中
if (cur.val < val)
cur = cur.right;
// 目标结点在 root 的左子树中
// 目标结点在 cur 的左子树中
else if (cur.val > val)
cur = cur.left;
// 找到目标结点,跳出循环

View File

@ -42,9 +42,9 @@ namespace hello_algo.chapter_tree
// 循环查找,越过叶结点后跳出
while (cur != null)
{
// 目标结点在 root 的右子树中
// 目标结点在 cur 的右子树中
if (cur.val < num) cur = cur.right;
// 目标结点在 root 的左子树中
// 目标结点在 cur 的左子树中
else if (cur.val > num) cur = cur.left;
// 找到目标结点,跳出循环
else break;
@ -65,9 +65,9 @@ namespace hello_algo.chapter_tree
// 找到重复结点,直接返回
if (cur.val == num) return null;
pre = cur;
// 插入位置在 root 的右子树中
// 插入位置在 cur 的右子树中
if (cur.val < num) cur = cur.right;
// 插入位置在 root 的左子树中
// 插入位置在 cur 的左子树中
else cur = cur.left;
}

View File

@ -195,11 +195,11 @@ func (t *avlTree) search(val int) *TreeNode {
cur := t.root
// 循环查找,越过叶结点后跳出
for cur != nil {
// 目标结点在 root 的右子树中
if cur.Val < val {
// 目标结点在 cur 的右子树中
cur = cur.Right
} else if cur.Val > val {
// 目标结点在 root 的左子树中
// 目标结点在 cur 的左子树中
cur = cur.Left
} else {
// 找到目标结点,跳出循环

View File

@ -46,10 +46,10 @@ func (bst *binarySearchTree) search(num int) *TreeNode {
// 循环查找,越过叶结点后跳出
for node != nil {
if node.Val < num {
// 目标结点在 root 的右子树中
// 目标结点在 cur 的右子树中
node = node.Right
} else if node.Val > num {
// 目标结点在 root 的左子树中
// 目标结点在 cur 的左子树中
node = node.Left
} else {
// 找到目标结点,跳出循环

View File

@ -165,10 +165,10 @@ class AVLTree {
TreeNode cur = root;
// 循环查找,越过叶结点后跳出
while (cur != null) {
// 目标结点在 root 的右子树中
// 目标结点在 cur 的右子树中
if (cur.val < val)
cur = cur.right;
// 目标结点在 root 的左子树中
// 目标结点在 cur 的左子树中
else if (cur.val > val)
cur = cur.left;
// 找到目标结点,跳出循环

View File

@ -40,9 +40,9 @@ class BinarySearchTree {
TreeNode cur = root;
// 循环查找,越过叶结点后跳出
while (cur != null) {
// 目标结点在 root 的右子树中
// 目标结点在 cur 的右子树中
if (cur.val < num) cur = cur.right;
// 目标结点在 root 的左子树中
// 目标结点在 cur 的左子树中
else if (cur.val > num) cur = cur.left;
// 找到目标结点,跳出循环
else break;
@ -61,9 +61,9 @@ class BinarySearchTree {
// 找到重复结点,直接返回
if (cur.val == num) return null;
pre = cur;
// 插入位置在 root 的右子树中
// 插入位置在 cur 的右子树中
if (cur.val < num) cur = cur.right;
// 插入位置在 root 的左子树中
// 插入位置在 cur 的左子树中
else cur = cur.left;
}
// 插入结点 val

View File

@ -37,9 +37,9 @@ function search(num) {
let cur = root;
// 循环查找,越过叶结点后跳出
while (cur !== null) {
// 目标结点在 root 的右子树中
// 目标结点在 cur 的右子树中
if (cur.val < num) cur = cur.right;
// 目标结点在 root 的左子树中
// 目标结点在 cur 的左子树中
else if (cur.val > num) cur = cur.left;
// 找到目标结点,跳出循环
else break;
@ -58,9 +58,9 @@ function insert(num) {
// 找到重复结点,直接返回
if (cur.val === num) return null;
pre = cur;
// 插入位置在 root 的右子树中
// 插入位置在 cur 的右子树中
if (cur.val < num) cur = cur.right;
// 插入位置在 root 的左子树中
// 插入位置在 cur 的左子树中
else cur = cur.left;
}
// 插入结点 val

View File

@ -152,10 +152,10 @@ class AVLTree:
cur = self.root
# 循环查找,越过叶结点后跳出
while cur is not None:
# 目标结点在 root 的右子树中
# 目标结点在 cur 的右子树中
if cur.val < val:
cur = cur.right
# 目标结点在 root 的左子树中
# 目标结点在 cur 的左子树中
elif cur.val > val:
cur = cur.left
# 找到目标结点,跳出循环

View File

@ -37,10 +37,10 @@ class BinarySearchTree:
cur = self.root
# 循环查找,越过叶结点后跳出
while cur is not None:
# 目标结点在 root 的右子树中
# 目标结点在 cur 的右子树中
if cur.val < num:
cur = cur.right
# 目标结点在 root 的左子树中
# 目标结点在 cur 的左子树中
elif cur.val > num:
cur = cur.left
# 找到目标结点,跳出循环
@ -64,10 +64,11 @@ class BinarySearchTree:
if cur.val == num:
return None
pre = cur
if cur.val < num: # 插入位置在 root 的右子树中
# 插入位置在 cur 的右子树中
if cur.val < num:
cur = cur.right
else: # 插入位置在 root 的左子树中
# 插入位置在 cur 的左子树中
else:
cur = cur.left
# 插入结点 val

View File

@ -40,9 +40,9 @@ function search(num: number): TreeNode | null {
// 循环查找,越过叶结点后跳出
while (cur !== null) {
if (cur.val < num) {
cur = cur.right; // 目标结点在 root 的右子树中
cur = cur.right; // 目标结点在 cur 的右子树中
} else if (cur.val > num) {
cur = cur.left; // 目标结点在 root 的左子树中
cur = cur.left; // 目标结点在 cur 的左子树中
} else {
break; // 找到目标结点,跳出循环
}
@ -66,9 +66,9 @@ function insert(num: number): TreeNode | null {
}
pre = cur;
if (cur.val < num) {
cur = cur.right as TreeNode; // 插入位置在 root 的右子树中
cur = cur.right as TreeNode; // 插入位置在 cur 的右子树中
} else {
cur = cur.left as TreeNode; // 插入位置在 root 的左子树中
cur = cur.left as TreeNode; // 插入位置在 cur 的左子树中
}
}
// 插入结点 val

View File

@ -43,9 +43,9 @@ comments: true
TreeNode cur = root;
// 循环查找,越过叶结点后跳出
while (cur != null) {
// 目标结点在 root 的右子树中
// 目标结点在 cur 的右子树中
if (cur.val < num) cur = cur.right;
// 目标结点在 root 的左子树中
// 目标结点在 cur 的左子树中
else if (cur.val > num) cur = cur.left;
// 找到目标结点,跳出循环
else break;
@ -63,9 +63,9 @@ comments: true
TreeNode* cur = root;
// 循环查找,越过叶结点后跳出
while (cur != nullptr) {
// 目标结点在 root 的右子树中
// 目标结点在 cur 的右子树中
if (cur->val < num) cur = cur->right;
// 目标结点在 root 的左子树中
// 目标结点在 cur 的左子树中
else if (cur->val > num) cur = cur->left;
// 找到目标结点,跳出循环
else break;
@ -83,10 +83,10 @@ comments: true
cur = self.root
# 循环查找,越过叶结点后跳出
while cur is not None:
# 目标结点在 root 的右子树中
# 目标结点在 cur 的右子树中
if cur.val < num:
cur = cur.right
# 目标结点在 root 的左子树中
# 目标结点在 cur 的左子树中
elif cur.val > num:
cur = cur.left
# 找到目标结点,跳出循环
@ -104,10 +104,10 @@ comments: true
// 循环查找,越过叶结点后跳出
for node != nil {
if node.Val < num {
// 目标结点在 root 的右子树中
// 目标结点在 cur 的右子树中
node = node.Right
} else if node.Val > num {
// 目标结点在 root 的左子树中
// 目标结点在 cur 的左子树中
node = node.Left
} else {
// 找到目标结点,跳出循环
@ -127,9 +127,9 @@ comments: true
let cur = root;
// 循环查找,越过叶结点后跳出
while (cur !== null) {
// 目标结点在 root 的右子树中
// 目标结点在 cur 的右子树中
if (cur.val < num) cur = cur.right;
// 目标结点在 root 的左子树中
// 目标结点在 cur 的左子树中
else if (cur.val > num) cur = cur.left;
// 找到目标结点,跳出循环
else break;
@ -148,9 +148,9 @@ comments: true
// 循环查找,越过叶结点后跳出
while (cur !== null) {
if (cur.val < num) {
cur = cur.right; // 目标结点在 root 的右子树中
cur = cur.right; // 目标结点在 cur 的右子树中
} else if (cur.val > num) {
cur = cur.left; // 目标结点在 root 的左子树中
cur = cur.left; // 目标结点在 cur 的左子树中
} else {
break; // 找到目标结点,跳出循环
}
@ -176,9 +176,9 @@ comments: true
// 循环查找,越过叶结点后跳出
while (cur != null)
{
// 目标结点在 root 的右子树中
// 目标结点在 cur 的右子树中
if (cur.val < num) cur = cur.right;
// 目标结点在 root 的左子树中
// 目标结点在 cur 的左子树中
else if (cur.val > num) cur = cur.left;
// 找到目标结点,跳出循环
else break;
@ -218,9 +218,9 @@ comments: true
// 找到重复结点,直接返回
if (cur.val == num) return null;
pre = cur;
// 插入位置在 root 的右子树中
// 插入位置在 cur 的右子树中
if (cur.val < num) cur = cur.right;
// 插入位置在 root 的左子树中
// 插入位置在 cur 的左子树中
else cur = cur.left;
}
// 插入结点 val
@ -244,9 +244,9 @@ comments: true
// 找到重复结点,直接返回
if (cur->val == num) return nullptr;
pre = cur;
// 插入位置在 root 的右子树中
// 插入位置在 cur 的右子树中
if (cur->val < num) cur = cur->right;
// 插入位置在 root 的左子树中
// 插入位置在 cur 的左子树中
else cur = cur->left;
}
// 插入结点 val
@ -276,10 +276,11 @@ comments: true
if cur.val == num:
return None
pre = cur
if cur.val < num: # 插入位置在 root 的右子树中
# 插入位置在 cur 的右子树中
if cur.val < num:
cur = cur.right
else: # 插入位置在 root 的左子树中
# 插入位置在 cur 的左子树中
else:
cur = cur.left
# 插入结点 val
@ -339,9 +340,9 @@ comments: true
// 找到重复结点,直接返回
if (cur.val === num) return null;
pre = cur;
// 插入位置在 root 的右子树中
// 插入位置在 cur 的右子树中
if (cur.val < num) cur = cur.right;
// 插入位置在 root 的左子树中
// 插入位置在 cur 的左子树中
else cur = cur.left;
}
// 插入结点 val
@ -370,9 +371,9 @@ comments: true
}
pre = cur;
if (cur.val < num) {
cur = cur.right as TreeNode; // 插入位置在 root 的右子树中
cur = cur.right as TreeNode; // 插入位置在 cur 的右子树中
} else {
cur = cur.left as TreeNode; // 插入位置在 root 的左子树中
cur = cur.left as TreeNode; // 插入位置在 cur 的左子树中
}
}
// 插入结点 val
@ -407,9 +408,9 @@ comments: true
// 找到重复结点,直接返回
if (cur.val == num) return null;
pre = cur;
// 插入位置在 root 的右子树中
// 插入位置在 cur 的右子树中
if (cur.val < num) cur = cur.right;
// 插入位置在 root 的左子树中
// 插入位置在 cur 的左子树中
else cur = cur.left;
}