lua实现树的先,中,后序遍历
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()