function visitNode(data)
print(data)
end
function Inorder(node)
if node.left then
node.left:traversal()
end
visitNode(node.data)
if node.right then
node.right:traversal()
end
end
function Preorder(node)
visitNode(node.data)
if node.left then
node.left:traversal()
end
if node.right then
node.right:traversal()
end
end
function Postorder(node)
if node.left then
node.left:traversal()
end
if node.right then
node.right:traversal()
end
visitNode(node.data)
end
preorderTra = {__index = {traversal = Preorder}} --先序遍历
inorderTra = {__index = {traversal = Inorder}} --中序遍历
postorderTra = {__index = {traversal = Postorder}} --后序遍历
function create(tab)
local t = tab
setmetatable(t, preorderTra)
return t
end
-- 创建一个二叉树
node1 = create({data = 1, left = nil, right = nil})
node2 = create({data = 2, left = nil, right = nil})
node3 = create({data = 3, left = node1, ritht = nil})
node4 = create({data = 4, left = nil, right = node2})
rootNode = create({data = 5, left = node3, right = node4})
-- roonode = create({data = 5})
-- roonode.left = create({data = 3})
-- roonode.right = create({data = 4})
-- roonode.left.left = create({data = 1})
-- rootNode.right.right = create({data = 2})
--遍历
rootNode:traversal()