Files
block-game/ServerScriptService/Actor/ServerChunkManager/TerrainGen/Deflate/Huffman/Node.lua
2026-01-08 22:58:58 +02:00

38 lines
735 B
Lua

local Node = {}
Node.__index = Node
function Node.new(data)
local node = setmetatable({}, Node)
node.data = data
node.left = nil
node.right = nil
return node
end
-- return an iterator that traverses the tree in order
function Node:inorder()
local stack = {}
local current = {self, ""}
table.insert(stack, current)
return function()
while current[1].left do
local parent = current
current = {parent[1].left, parent[2] .. "0"}
table.insert(stack, current)
end
if #stack > 0 then
local node = table.remove(stack)
if node[1].right then
local parent = node
current = {parent[1].right, parent[2] .. "1"}
table.insert(stack, current)
end
return node[1], node[2]
end
end
end
return Node