lua构造完美二叉树

本文讲述了作者在公司游戏项目中遇到的现金赛需求,如何利用二叉树结构来优化比赛流程的管理。通过构建二叉树,每个节点包含两个人的战斗状态,方便数据推送和状态管理,提高了灵活性。同时,作者反思了之前代码的不足,并决定多写博客进行自我总结。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


杂话:

最近这几天闲来无事,公司的游戏马上要上线了,觉得最近几个月自己的状态都不是很好,刚公司招来的一个嘴强王者实习期完被劝退了(手动滑稽)主要是他自己也没有目标吧,打算把公司项目的一些代码看一遍,的确是有点纠结,函数跳来跳去的,不过我还是必须要弄懂,最后想了想还是从自己感兴趣的地方开始看。


进入正题:

有个现金赛的需求 ,基本流程就是海选出32强,然后分四组8个人,俩俩pk赛,最后的4个人进行冠亚军争霸,由于数据结构的构造不到位,导致各种状态很难管理。最后也gg了,交给了别人来接手. 其实第一眼看到这种流程的比赛,就应该想起数状图的形式,就应该想起用树的结构来管理各部分的节点的。然后每个节点包括二个人的战斗的各种状态,发给客户端的数据就是把整个树的结构都推过去,这样也灵活管理,要是策划想改X强也不用改多少逻辑。

    重点是今天下用lua来写构造一个二叉树,中间有个小坑,感觉自己弱的数据结构没学好啊,以后还是要多看看别人的代码,虽然我现在也不想看书,之前也问过公司的一个人,写代码这种东西,还是强调实干,看那么多书,然并卵,又不是去教书。
function CreateTree(dep)
    local root = {lchild =nil,rchild = nil,parent=
二叉树是一种数据结构,可以用来存储和查找数据。下面是一个用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`表示二叉树,包含根节点。该二叉树的插入和查找操作都是基于节点值进行的。在测试代码中,我们向二叉树中插入了一些节点,并查找了一些节点,打印出结果。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值