mirror of
https://github.com/krahets/hello-algo.git
synced 2026-04-05 11:41:22 +08:00
upgrade zig codes to 0.11.0-dev.3379+629f0d23b (#563)
* upgrade zig codes to 0.11.0-dev.3379+629f0d23b * upgrade zig codes to 0.11.0-dev.3379+629f0d23b
This commit is contained in:
@@ -108,8 +108,8 @@ pub fn AVLTree(comptime T: type) type {
|
||||
}
|
||||
|
||||
// 插入节点
|
||||
fn insert(self: *Self, val: T) void {
|
||||
self.root = try self.insertHelper(self.root, val);
|
||||
fn insert(self: *Self, val: T) !void {
|
||||
self.root = (try self.insertHelper(self.root, val)).?;
|
||||
}
|
||||
|
||||
// 递归插入节点(辅助方法)
|
||||
@@ -137,7 +137,7 @@ pub fn AVLTree(comptime T: type) type {
|
||||
|
||||
// 删除节点
|
||||
fn remove(self: *Self, val: T) void {
|
||||
self.root = self.removeHelper(self.root, val);
|
||||
self.root = self.removeHelper(self.root, val).?;
|
||||
}
|
||||
|
||||
// 递归删除节点(辅助方法)
|
||||
@@ -200,14 +200,14 @@ pub fn AVLTree(comptime T: type) type {
|
||||
|
||||
pub fn testInsert(comptime T: type, tree_: *AVLTree(T), val: T) !void {
|
||||
var tree = tree_;
|
||||
_ = try tree.insert(val);
|
||||
try tree.insert(val);
|
||||
std.debug.print("\n插入节点 {} 后,AVL 树为\n", .{val});
|
||||
try inc.PrintUtil.printTree(tree.root, null, false);
|
||||
}
|
||||
|
||||
pub fn testRemove(comptime T: type, tree_: *AVLTree(T), val: T) void {
|
||||
var tree = tree_;
|
||||
_ = tree.remove(val);
|
||||
tree.remove(val);
|
||||
std.debug.print("\n删除节点 {} 后,AVL 树为\n", .{val});
|
||||
try inc.PrintUtil.printTree(tree.root, null, false);
|
||||
}
|
||||
|
||||
@@ -20,7 +20,7 @@ pub fn BinarySearchTree(comptime T: type) type {
|
||||
self.mem_arena = std.heap.ArenaAllocator.init(allocator);
|
||||
self.mem_allocator = self.mem_arena.?.allocator();
|
||||
}
|
||||
std.sort.sort(T, nums, {}, comptime std.sort.asc(T)); // 排序数组
|
||||
std.mem.sort(T, nums, {}, comptime std.sort.asc(T)); // 排序数组
|
||||
self.root = try self.buildTree(nums, 0, nums.len - 1); // 构建二叉搜索树
|
||||
}
|
||||
|
||||
@@ -98,7 +98,7 @@ pub fn BinarySearchTree(comptime T: type) type {
|
||||
}
|
||||
|
||||
// 删除节点
|
||||
fn remove(self: *Self, num: T) !void {
|
||||
fn remove(self: *Self, num: T) void {
|
||||
// 若树为空,直接提前返回
|
||||
if (self.root == null) return;
|
||||
var cur = self.root;
|
||||
@@ -135,11 +135,11 @@ pub fn BinarySearchTree(comptime T: type) type {
|
||||
while (tmp.?.left != null) {
|
||||
tmp = tmp.?.left;
|
||||
}
|
||||
var tmpVal = tmp.?.val;
|
||||
var tmp_val = tmp.?.val;
|
||||
// 递归删除节点 tmp
|
||||
_ = self.remove(tmp.?.val);
|
||||
self.remove(tmp.?.val);
|
||||
// 用 tmp 覆盖 cur
|
||||
cur.?.val = tmpVal;
|
||||
cur.?.val = tmp_val;
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -160,18 +160,18 @@ pub fn main() !void {
|
||||
std.debug.print("\n查找到的节点对象为 {any},节点值 = {}\n", .{node, node.?.val});
|
||||
|
||||
// 插入节点
|
||||
node = try bst.insert(16);
|
||||
try bst.insert(16);
|
||||
std.debug.print("\n插入节点 16 后,二叉树为\n", .{});
|
||||
try inc.PrintUtil.printTree(bst.getRoot(), null, false);
|
||||
|
||||
// 删除节点
|
||||
_ = bst.remove(1);
|
||||
bst.remove(1);
|
||||
std.debug.print("\n删除节点 1 后,二叉树为\n", .{});
|
||||
try inc.PrintUtil.printTree(bst.getRoot(), null, false);
|
||||
_ = bst.remove(2);
|
||||
bst.remove(2);
|
||||
std.debug.print("\n删除节点 2 后,二叉树为\n", .{});
|
||||
try inc.PrintUtil.printTree(bst.getRoot(), null, false);
|
||||
_ = bst.remove(4);
|
||||
bst.remove(4);
|
||||
std.debug.print("\n删除节点 4 后,二叉树为\n", .{});
|
||||
try inc.PrintUtil.printTree(bst.getRoot(), null, false);
|
||||
|
||||
|
||||
@@ -67,4 +67,4 @@ pub fn main() !void {
|
||||
inc.PrintUtil.printList(i32, list);
|
||||
|
||||
_ = try std.io.getStdIn().reader().readByte();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user