mirror of
https://github.com/krahets/hello-algo.git
synced 2026-07-12 15:36:05 +00:00
1. Add build script for Java.
2. Add height limitation for code blocks in extra.css. 3. Fix "节点" to "结点".
This commit is contained in:
@@ -61,7 +61,7 @@ TreeNode *rightRotate(TreeNode *node) {
|
||||
// 更新结点高度
|
||||
updateHeight(node);
|
||||
updateHeight(child);
|
||||
// 返回旋转后子树的根节点
|
||||
// 返回旋转后子树的根结点
|
||||
return child;
|
||||
}
|
||||
|
||||
@@ -76,7 +76,7 @@ TreeNode *leftRotate(TreeNode *node) {
|
||||
// 更新结点高度
|
||||
updateHeight(node);
|
||||
updateHeight(child);
|
||||
// 返回旋转后子树的根节点
|
||||
// 返回旋转后子树的根结点
|
||||
return child;
|
||||
}
|
||||
|
||||
@@ -128,7 +128,7 @@ TreeNode *insertHelper(TreeNode *node, int val) {
|
||||
updateHeight(node);
|
||||
/* 2. 执行旋转操作,使该子树重新恢复平衡 */
|
||||
node = rotate(node);
|
||||
// 返回子树的根节点
|
||||
// 返回子树的根结点
|
||||
return node;
|
||||
}
|
||||
|
||||
@@ -186,7 +186,7 @@ TreeNode *removeHelper(TreeNode *node, int val) {
|
||||
updateHeight(node);
|
||||
/* 2. 执行旋转操作,使该子树重新恢复平衡 */
|
||||
node = rotate(node);
|
||||
// 返回子树的根节点
|
||||
// 返回子树的根结点
|
||||
return node;
|
||||
}
|
||||
|
||||
|
||||
@@ -28,7 +28,7 @@ int *levelOrder(TreeNode *root, int *size) {
|
||||
while (front < rear) {
|
||||
// 队列出队
|
||||
node = queue[front++];
|
||||
// 保存结点
|
||||
// 保存结点值
|
||||
arr[index++] = node->val;
|
||||
if (node->left != NULL) {
|
||||
// 左子结点入队
|
||||
|
||||
@@ -6,11 +6,9 @@
|
||||
|
||||
#include "../include/include.hpp"
|
||||
|
||||
/**
|
||||
* 合并左子数组和右子数组
|
||||
* 左子数组区间 [left, mid]
|
||||
* 右子数组区间 [mid + 1, right]
|
||||
*/
|
||||
/* 合并左子数组和右子数组 */
|
||||
// 左子数组区间 [left, mid]
|
||||
// 右子数组区间 [mid + 1, right]
|
||||
void merge(vector<int>& nums, int left, int mid, int right) {
|
||||
// 初始化辅助数组
|
||||
vector<int> tmp(nums.begin() + left, nums.begin() + right + 1);
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
/* AVL 树 */
|
||||
class AVLTree {
|
||||
public:
|
||||
TreeNode* root; // 根节点
|
||||
TreeNode* root; // 根结点
|
||||
private:
|
||||
/* 更新结点高度 */
|
||||
void updateHeight(TreeNode* node) {
|
||||
@@ -27,7 +27,7 @@ private:
|
||||
// 更新结点高度
|
||||
updateHeight(node);
|
||||
updateHeight(child);
|
||||
// 返回旋转后子树的根节点
|
||||
// 返回旋转后子树的根结点
|
||||
return child;
|
||||
}
|
||||
|
||||
@@ -41,7 +41,7 @@ private:
|
||||
// 更新结点高度
|
||||
updateHeight(node);
|
||||
updateHeight(child);
|
||||
// 返回旋转后子树的根节点
|
||||
// 返回旋转后子树的根结点
|
||||
return child;
|
||||
}
|
||||
|
||||
@@ -88,7 +88,7 @@ private:
|
||||
updateHeight(node); // 更新结点高度
|
||||
/* 2. 执行旋转操作,使该子树重新恢复平衡 */
|
||||
node = rotate(node);
|
||||
// 返回子树的根节点
|
||||
// 返回子树的根结点
|
||||
return node;
|
||||
}
|
||||
|
||||
@@ -133,7 +133,7 @@ private:
|
||||
updateHeight(node); // 更新结点高度
|
||||
/* 2. 执行旋转操作,使该子树重新恢复平衡 */
|
||||
node = rotate(node);
|
||||
// 返回子树的根节点
|
||||
// 返回子树的根结点
|
||||
return node;
|
||||
}
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@ vector<int> hierOrder(TreeNode* root) {
|
||||
while (!queue.empty()) {
|
||||
TreeNode* node = queue.front();
|
||||
queue.pop(); // 队列出队
|
||||
vec.push_back(node->val); // 保存结点
|
||||
vec.push_back(node->val); // 保存结点值
|
||||
if (node->left != nullptr)
|
||||
queue.push(node->left); // 左子结点入队
|
||||
if (node->right != nullptr)
|
||||
|
||||
@@ -12,7 +12,7 @@ namespace hello_algo.chapter_tree
|
||||
/* AVL 树 */
|
||||
class AVLTree
|
||||
{
|
||||
public TreeNode? root; // 根节点
|
||||
public TreeNode? root; // 根结点
|
||||
|
||||
/* 获取结点高度 */
|
||||
public int height(TreeNode? node)
|
||||
@@ -48,7 +48,7 @@ namespace hello_algo.chapter_tree
|
||||
// 更新结点高度
|
||||
updateHeight(node);
|
||||
updateHeight(child);
|
||||
// 返回旋转后子树的根节点
|
||||
// 返回旋转后子树的根结点
|
||||
return child;
|
||||
}
|
||||
|
||||
@@ -63,7 +63,7 @@ namespace hello_algo.chapter_tree
|
||||
// 更新结点高度
|
||||
updateHeight(node);
|
||||
updateHeight(child);
|
||||
// 返回旋转后子树的根节点
|
||||
// 返回旋转后子树的根结点
|
||||
return child;
|
||||
}
|
||||
|
||||
@@ -127,7 +127,7 @@ namespace hello_algo.chapter_tree
|
||||
updateHeight(node); // 更新结点高度
|
||||
/* 2. 执行旋转操作,使该子树重新恢复平衡 */
|
||||
node = rotate(node);
|
||||
// 返回子树的根节点
|
||||
// 返回子树的根结点
|
||||
return node;
|
||||
}
|
||||
|
||||
@@ -170,7 +170,7 @@ namespace hello_algo.chapter_tree
|
||||
updateHeight(node); // 更新结点高度
|
||||
/* 2. 执行旋转操作,使该子树重新恢复平衡 */
|
||||
node = rotate(node);
|
||||
// 返回子树的根节点
|
||||
// 返回子树的根结点
|
||||
return node;
|
||||
}
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ import . "github.com/krahets/hello-algo/pkg"
|
||||
|
||||
/* AVL 树 */
|
||||
type avlTree struct {
|
||||
// 根节点
|
||||
// 根结点
|
||||
root *TreeNode
|
||||
}
|
||||
|
||||
@@ -57,7 +57,7 @@ func rightRotate(node *TreeNode) *TreeNode {
|
||||
// 更新结点高度
|
||||
updateHeight(node)
|
||||
updateHeight(child)
|
||||
// 返回旋转后子树的根节点
|
||||
// 返回旋转后子树的根结点
|
||||
return child
|
||||
}
|
||||
|
||||
@@ -71,7 +71,7 @@ func leftRotate(node *TreeNode) *TreeNode {
|
||||
// 更新结点高度
|
||||
updateHeight(node)
|
||||
updateHeight(child)
|
||||
// 返回旋转后子树的根节点
|
||||
// 返回旋转后子树的根结点
|
||||
return child
|
||||
}
|
||||
|
||||
@@ -130,7 +130,7 @@ func insertHelper(node *TreeNode, val int) *TreeNode {
|
||||
updateHeight(node)
|
||||
/* 2. 执行旋转操作,使该子树重新恢复平衡 */
|
||||
node = rotate(node)
|
||||
// 返回子树的根节点
|
||||
// 返回子树的根结点
|
||||
return node
|
||||
}
|
||||
|
||||
@@ -174,7 +174,7 @@ func removeHelper(node *TreeNode, val int) *TreeNode {
|
||||
updateHeight(node)
|
||||
/* 2. 执行旋转操作,使该子树重新恢复平衡 */
|
||||
node = rotate(node)
|
||||
// 返回子树的根节点
|
||||
// 返回子树的根结点
|
||||
return node
|
||||
}
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@ func levelOrder(root *TreeNode) []int {
|
||||
for queue.Len() > 0 {
|
||||
// poll
|
||||
node := queue.Remove(queue.Front()).(*TreeNode)
|
||||
// 保存结点
|
||||
// 保存结点值
|
||||
nums = append(nums, node.Val)
|
||||
if node.Left != nil {
|
||||
// 左子结点入队
|
||||
|
||||
@@ -74,6 +74,7 @@ public class space_complexity {
|
||||
/* 平方阶(递归实现) */
|
||||
static int quadraticRecur(int n) {
|
||||
if (n <= 0) return 0;
|
||||
// 数组 nums 长度为 n, n-1, ..., 2, 1
|
||||
int[] nums = new int[n];
|
||||
System.out.println("递归 n = " + n + " 中的 nums 长度 = " + nums.length);
|
||||
return quadraticRecur(n - 1);
|
||||
|
||||
@@ -9,11 +9,9 @@ package chapter_sorting;
|
||||
import java.util.*;
|
||||
|
||||
public class merge_sort {
|
||||
/**
|
||||
* 合并左子数组和右子数组
|
||||
* 左子数组区间 [left, mid]
|
||||
* 右子数组区间 [mid + 1, right]
|
||||
*/
|
||||
/* 合并左子数组和右子数组 */
|
||||
// 左子数组区间 [left, mid]
|
||||
// 右子数组区间 [mid + 1, right]
|
||||
static void merge(int[] nums, int left, int mid, int right) {
|
||||
// 初始化辅助数组
|
||||
int[] tmp = Arrays.copyOfRange(nums, left, right + 1);
|
||||
|
||||
@@ -123,7 +123,7 @@ class QuickSortTailCall {
|
||||
}
|
||||
|
||||
/* 快速排序(尾递归优化) */
|
||||
static void quickSort(int[] nums, int left, int right) {
|
||||
public static void quickSort(int[] nums, int left, int right) {
|
||||
// 子数组长度为 1 时终止
|
||||
while (left < right) {
|
||||
// 哨兵划分操作
|
||||
|
||||
@@ -10,7 +10,7 @@ import include.*;
|
||||
|
||||
/* AVL 树 */
|
||||
class AVLTree {
|
||||
TreeNode root; // 根节点
|
||||
TreeNode root; // 根结点
|
||||
|
||||
/* 获取结点高度 */
|
||||
public int height(TreeNode node) {
|
||||
@@ -42,7 +42,7 @@ class AVLTree {
|
||||
// 更新结点高度
|
||||
updateHeight(node);
|
||||
updateHeight(child);
|
||||
// 返回旋转后子树的根节点
|
||||
// 返回旋转后子树的根结点
|
||||
return child;
|
||||
}
|
||||
|
||||
@@ -56,7 +56,7 @@ class AVLTree {
|
||||
// 更新结点高度
|
||||
updateHeight(node);
|
||||
updateHeight(child);
|
||||
// 返回旋转后子树的根节点
|
||||
// 返回旋转后子树的根结点
|
||||
return child;
|
||||
}
|
||||
|
||||
@@ -109,7 +109,7 @@ class AVLTree {
|
||||
updateHeight(node); // 更新结点高度
|
||||
/* 2. 执行旋转操作,使该子树重新恢复平衡 */
|
||||
node = rotate(node);
|
||||
// 返回子树的根节点
|
||||
// 返回子树的根结点
|
||||
return node;
|
||||
}
|
||||
|
||||
@@ -146,7 +146,7 @@ class AVLTree {
|
||||
updateHeight(node); // 更新结点高度
|
||||
/* 2. 执行旋转操作,使该子树重新恢复平衡 */
|
||||
node = rotate(node);
|
||||
// 返回子树的根节点
|
||||
// 返回子树的根结点
|
||||
return node;
|
||||
}
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@ public class binary_tree_bfs {
|
||||
List<Integer> list = new ArrayList<>();
|
||||
while (!queue.isEmpty()) {
|
||||
TreeNode node = queue.poll(); // 队列出队
|
||||
list.add(node.val); // 保存结点
|
||||
list.add(node.val); // 保存结点值
|
||||
if (node.left != null)
|
||||
queue.offer(node.left); // 左子结点入队
|
||||
if (node.right != null)
|
||||
|
||||
@@ -4,11 +4,9 @@
|
||||
* Author: IsChristina (christinaxia77@foxmail.com)
|
||||
*/
|
||||
|
||||
/**
|
||||
* 合并左子数组和右子数组
|
||||
* 左子数组区间 [left, mid]
|
||||
* 右子数组区间 [mid + 1, right]
|
||||
*/
|
||||
/* 合并左子数组和右子数组 */
|
||||
// 左子数组区间 [left, mid]
|
||||
// 右子数组区间 [mid + 1, right]
|
||||
function merge(nums, left, mid, right) {
|
||||
// 初始化辅助数组
|
||||
let tmp = nums.slice(left, right + 1);
|
||||
|
||||
@@ -11,7 +11,7 @@ const { printTree } = require("../include/PrintUtil");
|
||||
class AVLTree {
|
||||
/*构造函数*/
|
||||
constructor() {
|
||||
this.root = null; //根节点
|
||||
this.root = null; //根结点
|
||||
}
|
||||
|
||||
/* 获取结点高度 */
|
||||
@@ -44,7 +44,7 @@ class AVLTree {
|
||||
// 更新结点高度
|
||||
this.updateHeight(node);
|
||||
this.updateHeight(child);
|
||||
// 返回旋转后子树的根节点
|
||||
// 返回旋转后子树的根结点
|
||||
return child;
|
||||
}
|
||||
|
||||
@@ -58,7 +58,7 @@ class AVLTree {
|
||||
// 更新结点高度
|
||||
this.updateHeight(node);
|
||||
this.updateHeight(child);
|
||||
// 返回旋转后子树的根节点
|
||||
// 返回旋转后子树的根结点
|
||||
return child;
|
||||
}
|
||||
|
||||
@@ -108,7 +108,7 @@ class AVLTree {
|
||||
this.updateHeight(node); // 更新结点高度
|
||||
/* 2. 执行旋转操作,使该子树重新恢复平衡 */
|
||||
node = this.rotate(node);
|
||||
// 返回子树的根节点
|
||||
// 返回子树的根结点
|
||||
return node;
|
||||
}
|
||||
|
||||
@@ -141,7 +141,7 @@ class AVLTree {
|
||||
this.updateHeight(node); // 更新结点高度
|
||||
/* 2. 执行旋转操作,使该子树重新恢复平衡 */
|
||||
node = this.rotate(node);
|
||||
// 返回子树的根节点
|
||||
// 返回子树的根结点
|
||||
return node;
|
||||
}
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@ function hierOrder(root) {
|
||||
let list = [];
|
||||
while (queue.length) {
|
||||
let node = queue.shift(); // 队列出队
|
||||
list.push(node.val); // 保存结点
|
||||
list.push(node.val); // 保存结点值
|
||||
if (node.left)
|
||||
queue.push(node.left); // 左子结点入队
|
||||
if (node.right)
|
||||
|
||||
@@ -43,7 +43,7 @@ class AVLTree:
|
||||
# 更新结点高度
|
||||
self.__update_height(node)
|
||||
self.__update_height(child)
|
||||
# 返回旋转后子树的根节点
|
||||
# 返回旋转后子树的根结点
|
||||
return child
|
||||
|
||||
""" 左旋操作 """
|
||||
@@ -56,7 +56,7 @@ class AVLTree:
|
||||
# 更新结点高度
|
||||
self.__update_height(node)
|
||||
self.__update_height(child)
|
||||
# 返回旋转后子树的根节点
|
||||
# 返回旋转后子树的根结点
|
||||
return child
|
||||
|
||||
""" 执行旋转操作,使该子树重新恢复平衡 """
|
||||
|
||||
@@ -13,7 +13,7 @@ from include import *
|
||||
""" Driver Code """
|
||||
if __name__ == "__main__":
|
||||
""" 初始化二叉树 """
|
||||
# 初始化节点
|
||||
# 初始化结点
|
||||
n1 = TreeNode(val=1)
|
||||
n2 = TreeNode(val=2)
|
||||
n3 = TreeNode(val=3)
|
||||
@@ -29,7 +29,7 @@ if __name__ == "__main__":
|
||||
|
||||
""" 插入与删除结点 """
|
||||
P = TreeNode(0)
|
||||
# 在 n1 -> n2 中间插入节点 P
|
||||
# 在 n1 -> n2 中间插入结点 P
|
||||
n1.left = P
|
||||
P.left = n2
|
||||
print("\n插入结点 P 后\n")
|
||||
|
||||
@@ -18,7 +18,7 @@ def hier_order(root: Optional[TreeNode]):
|
||||
res = []
|
||||
while queue:
|
||||
node = queue.popleft() # 队列出队
|
||||
res.append(node.val) # 保存节点值
|
||||
res.append(node.val) # 保存结点值
|
||||
if node.left is not None:
|
||||
queue.append(node.left) # 左子结点入队
|
||||
if node.right is not None:
|
||||
|
||||
@@ -4,11 +4,9 @@
|
||||
* Author: nuomi1 (nuomi1@qq.com)
|
||||
*/
|
||||
|
||||
/**
|
||||
* 合并左子数组和右子数组
|
||||
* 左子数组区间 [left, mid]
|
||||
* 右子数组区间 [mid + 1, right]
|
||||
*/
|
||||
/* 合并左子数组和右子数组 */
|
||||
// 左子数组区间 [left, mid]
|
||||
// 右子数组区间 [mid + 1, right]
|
||||
func merge(nums: inout [Int], left: Int, mid: Int, right: Int) {
|
||||
// 初始化辅助数组
|
||||
let tmp = Array(nums[left ..< (right + 1)])
|
||||
|
||||
@@ -8,7 +8,7 @@ import utils
|
||||
|
||||
/* AVL 树 */
|
||||
class AVLTree {
|
||||
fileprivate var root: TreeNode? // 根节点
|
||||
fileprivate var root: TreeNode? // 根结点
|
||||
|
||||
/* 获取结点高度 */
|
||||
func height(node: TreeNode?) -> Int {
|
||||
@@ -40,7 +40,7 @@ class AVLTree {
|
||||
// 更新结点高度
|
||||
updateHeight(node: node)
|
||||
updateHeight(node: child)
|
||||
// 返回旋转后子树的根节点
|
||||
// 返回旋转后子树的根结点
|
||||
return child
|
||||
}
|
||||
|
||||
@@ -54,7 +54,7 @@ class AVLTree {
|
||||
// 更新结点高度
|
||||
updateHeight(node: node)
|
||||
updateHeight(node: child)
|
||||
// 返回旋转后子树的根节点
|
||||
// 返回旋转后子树的根结点
|
||||
return child
|
||||
}
|
||||
|
||||
@@ -112,7 +112,7 @@ class AVLTree {
|
||||
updateHeight(node: node) // 更新结点高度
|
||||
/* 2. 执行旋转操作,使该子树重新恢复平衡 */
|
||||
node = rotate(node: node)
|
||||
// 返回子树的根节点
|
||||
// 返回子树的根结点
|
||||
return node
|
||||
}
|
||||
|
||||
@@ -155,7 +155,7 @@ class AVLTree {
|
||||
updateHeight(node: node) // 更新结点高度
|
||||
/* 2. 执行旋转操作,使该子树重新恢复平衡 */
|
||||
node = rotate(node: node)
|
||||
// 返回子树的根节点
|
||||
// 返回子树的根结点
|
||||
return node
|
||||
}
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ func hierOrder(root: TreeNode) -> [Int] {
|
||||
var list: [Int] = []
|
||||
while !queue.isEmpty {
|
||||
let node = queue.removeFirst() // 队列出队
|
||||
list.append(node.val) // 保存结点
|
||||
list.append(node.val) // 保存结点值
|
||||
if let left = node.left {
|
||||
queue.append(left) // 左子结点入队
|
||||
}
|
||||
|
||||
@@ -4,11 +4,9 @@
|
||||
* Author: Justin (xiefahit@gmail.com)
|
||||
*/
|
||||
|
||||
/**
|
||||
* 合并左子数组和右子数组
|
||||
* 左子数组区间 [left, mid]
|
||||
* 右子数组区间 [mid + 1, right]
|
||||
*/
|
||||
/* 合并左子数组和右子数组 */
|
||||
// 左子数组区间 [left, mid]
|
||||
// 右子数组区间 [mid + 1, right]
|
||||
function merge(nums: number[], left: number, mid: number, right: number): void {
|
||||
// 初始化辅助数组
|
||||
let tmp = nums.slice(left, right + 1);
|
||||
|
||||
@@ -12,7 +12,7 @@ class AVLTree {
|
||||
root: TreeNode;
|
||||
/*构造函数*/
|
||||
constructor() {
|
||||
this.root = null; //根节点
|
||||
this.root = null; //根结点
|
||||
}
|
||||
|
||||
/* 获取结点高度 */
|
||||
@@ -45,7 +45,7 @@ class AVLTree {
|
||||
// 更新结点高度
|
||||
this.updateHeight(node);
|
||||
this.updateHeight(child);
|
||||
// 返回旋转后子树的根节点
|
||||
// 返回旋转后子树的根结点
|
||||
return child;
|
||||
}
|
||||
|
||||
@@ -59,7 +59,7 @@ class AVLTree {
|
||||
// 更新结点高度
|
||||
this.updateHeight(node);
|
||||
this.updateHeight(child);
|
||||
// 返回旋转后子树的根节点
|
||||
// 返回旋转后子树的根结点
|
||||
return child;
|
||||
}
|
||||
|
||||
@@ -113,7 +113,7 @@ class AVLTree {
|
||||
this.updateHeight(node); // 更新结点高度
|
||||
/* 2. 执行旋转操作,使该子树重新恢复平衡 */
|
||||
node = this.rotate(node);
|
||||
// 返回子树的根节点
|
||||
// 返回子树的根结点
|
||||
return node;
|
||||
}
|
||||
|
||||
@@ -151,7 +151,7 @@ class AVLTree {
|
||||
this.updateHeight(node); // 更新结点高度
|
||||
/* 2. 执行旋转操作,使该子树重新恢复平衡 */
|
||||
node = this.rotate(node);
|
||||
// 返回子树的根节点
|
||||
// 返回子树的根结点
|
||||
return node;
|
||||
}
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@ function hierOrder(root: TreeNode | null): number[] {
|
||||
const list: number[] = [];
|
||||
while (queue.length) {
|
||||
let node = queue.shift() as TreeNode; // 队列出队
|
||||
list.push(node.val); // 保存结点
|
||||
list.push(node.val); // 保存结点值
|
||||
if (node.left) {
|
||||
queue.push(node.left); // 左子结点入队
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@ pub fn AVLTree(comptime T: type) type {
|
||||
return struct {
|
||||
const Self = @This();
|
||||
|
||||
root: ?*inc.TreeNode(T) = null, // 根节点
|
||||
root: ?*inc.TreeNode(T) = null, // 根结点
|
||||
mem_arena: ?std.heap.ArenaAllocator = null,
|
||||
mem_allocator: std.mem.Allocator = undefined, // 内存分配器
|
||||
|
||||
@@ -59,7 +59,7 @@ pub fn AVLTree(comptime T: type) type {
|
||||
// 更新结点高度
|
||||
self.updateHeight(node);
|
||||
self.updateHeight(child);
|
||||
// 返回旋转后子树的根节点
|
||||
// 返回旋转后子树的根结点
|
||||
return child;
|
||||
}
|
||||
|
||||
@@ -73,7 +73,7 @@ pub fn AVLTree(comptime T: type) type {
|
||||
// 更新结点高度
|
||||
self.updateHeight(node);
|
||||
self.updateHeight(child);
|
||||
// 返回旋转后子树的根节点
|
||||
// 返回旋转后子树的根结点
|
||||
return child;
|
||||
}
|
||||
|
||||
@@ -132,7 +132,7 @@ pub fn AVLTree(comptime T: type) type {
|
||||
self.updateHeight(node); // 更新结点高度
|
||||
// 2. 执行旋转操作,使该子树重新恢复平衡
|
||||
node = self.rotate(node);
|
||||
// 返回子树的根节点
|
||||
// 返回子树的根结点
|
||||
return node;
|
||||
}
|
||||
|
||||
@@ -171,7 +171,7 @@ pub fn AVLTree(comptime T: type) type {
|
||||
self.updateHeight(node); // 更新结点高度
|
||||
// 2. 执行旋转操作,使该子树重新恢复平衡
|
||||
node = self.rotate(node);
|
||||
// 返回子树的根节点
|
||||
// 返回子树的根结点
|
||||
return node;
|
||||
}
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@ fn hierOrder(comptime T: type, mem_allocator: std.mem.Allocator, root: *inc.Tree
|
||||
while (queue.len > 0) {
|
||||
var queue_node = queue.popFirst().?; // 队列出队
|
||||
var node = queue_node.data;
|
||||
try list.append(node.val); // 保存结点
|
||||
try list.append(node.val); // 保存结点值
|
||||
if (node.left != null) {
|
||||
var tmp_node = try mem_allocator.create(L.Node);
|
||||
tmp_node.data = node.left.?;
|
||||
|
||||
Reference in New Issue
Block a user