mirror of
https://github.com/krahets/hello-algo.git
synced 2025-07-07 06:44:57 +08:00
Update the comments in
binary_search_tree and avl_tree.
This commit is contained in:
@ -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 {
|
||||
// 找到目标结点,跳出循环
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
// 找到目标结点,跳出循环
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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 {
|
||||
// 找到目标结点,跳出循环
|
||||
|
@ -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 {
|
||||
// 找到目标结点,跳出循环
|
||||
|
@ -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;
|
||||
// 找到目标结点,跳出循环
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
# 找到目标结点,跳出循环
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user