From d113ade03b5257d22a30234cf0334e0881524ddb Mon Sep 17 00:00:00 2001 From: krahets Date: Thu, 16 Mar 2023 22:50:35 +0800 Subject: [PATCH] build --- chapter_tree/avl_tree.md | 12 ++++++++---- chapter_tree/binary_tree.md | 4 +++- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/chapter_tree/avl_tree.md b/chapter_tree/avl_tree.md index bd10f8e7a..b03cbf779 100644 --- a/chapter_tree/avl_tree.md +++ b/chapter_tree/avl_tree.md @@ -1230,7 +1230,8 @@ AVL 树的独特之处在于「旋转 Rotation」的操作,其可 **在不影 /* 递归插入结点(辅助方法) */ TreeNode* insertHelper(TreeNode* node, int val) { - if (node == nullptr) return new TreeNode(val); + if (node == nullptr) + return new TreeNode(val); /* 1. 查找插入位置,并插入结点 */ if (val < node->val) node->left = insertHelper(node->left, val); @@ -1524,7 +1525,8 @@ AVL 树的独特之处在于「旋转 Rotation」的操作,其可 **在不影 /* 递归删除结点(辅助方法) */ TreeNode* removeHelper(TreeNode* node, int val) { - if (node == nullptr) return nullptr; + if (node == nullptr) + return nullptr; /* 1. 查找结点,并删除之 */ if (val < node->val) node->left = removeHelper(node->left, val); @@ -1546,8 +1548,9 @@ AVL 树的独特之处在于「旋转 Rotation」的操作,其可 **在不影 } else { // 子结点数量 = 2 ,则将中序遍历的下个结点删除,并用该结点替换当前结点 TreeNode* temp = getInOrderNext(node->right); + int tempVal = temp->val; node->right = removeHelper(node->right, temp->val); - node->val = temp->val; + node->val = tempVal; } } updateHeight(node); // 更新结点高度 @@ -1559,7 +1562,8 @@ AVL 树的独特之处在于「旋转 Rotation」的操作,其可 **在不影 /* 获取中序遍历中的下一个结点(仅适用于 root 有左子结点的情况) */ TreeNode* getInOrderNext(TreeNode* node) { - if (node == nullptr) return node; + if (node == nullptr) + return node; // 循环访问左子结点,直到叶结点时为最小结点,跳出 while (node->left != nullptr) { node = node->left; diff --git a/chapter_tree/binary_tree.md b/chapter_tree/binary_tree.md index ea7811587..a0f49ff63 100644 --- a/chapter_tree/binary_tree.md +++ b/chapter_tree/binary_tree.md @@ -534,7 +534,9 @@ comments: true === "Go" ```go title="" - + /* 二叉树的数组表示 */ + // 使用 any 类型的切片, 就可以使用 nil 来标记空位 + tree := []any{1, 2, 3, 4, nil, 6, 7, 8, 9, nil, nil, 12, nil, nil, 15} ``` === "JavaScript"