lua写一个二叉树查找算法
时间: 2023-08-14 15:06:23 浏览: 171
二叉树是一种数据结构,可以用来存储和查找数据。下面是一个用Lua语言实现的二叉树查找算法:
```lua
--定义二叉树节点
local TreeNode = {}
TreeNode.__index = TreeNode
function TreeNode:new(value)
local node = {}
setmetatable(node, self)
node.value = value
node.left = nil
node.right = nil
return node
end
--定义二叉树
local BinaryTree = {}
BinaryTree.__index = BinaryTree
function BinaryTree:new()
local tree = {}
setmetatable(tree, self)
tree.root = nil
return tree
end
--向二叉树中插入节点
function BinaryTree:insert(value)
local node = TreeNode:new(value)
if self.root == nil then
self.root = node
else
local current = self.root
while true do
if value < current.value then
if current.left == nil then
current.left = node
break
else
current = current.left
end
else
if current.right == nil then
current.right = node
break
else
current = current.right
end
end
end
end
end
--在二叉树中查找节点
function BinaryTree:search(value)
local current = self.root
while current ~= nil do
if value == current.value then
return true
elseif value < current.value then
current = current.left
else
current = current.right
end
end
return false
end
--测试代码
local tree = BinaryTree:new()
tree:insert(5)
tree:insert(3)
tree:insert(7)
tree:insert(1)
tree:insert(4)
tree:insert(6)
tree:insert(8)
print(tree:search(5))
print(tree:search(2))
```
上述代码中,`TreeNode`表示二叉树的节点,包含节点值、左子树和右子树;`BinaryTree`表示二叉树,包含根节点。该二叉树的插入和查找操作都是基于节点值进行的。在测试代码中,我们向二叉树中插入了一些节点,并查找了一些节点,打印出结果。
阅读全文