平衡二叉树的简单建立--示例
来源:互联网 发布:java判断字符等于空格 编辑:程序博客网 时间:2024/06/02 01:48
<pre name="code" class="plain">PG.lua文件 -- 这个用来输出处理 打log
PG = {}function PG.Log(str)print(str);end
首先是pinghengtree.lua文件 数据结构定义在这里
require "PG";_M = {}; rawset(_M,"pinghengtree",{}); local pinghengtree = rawget(_M,"pinghengtree");-- pinghengtree = {};pinghengtree.tree = {};local tree = pinghengtree.tree;function tree: new(lefttree,righttree,data)local o = {};o.data = data;o.lefttree = lefttree;o.righttree = righttree;setmetatable(o,self);self.__index = self;return o;endfunction tree:AddChild(direction,data)PG.Log(direction);if direction == "left" thenPG.Log(" exe this?")if self.lefttree == nil thenPG.Log("self's leftnode is nil ")self.lefttree = self:new(nil,nil,data);elseself.lefttree.data = data;endelseif direction == "right" thenif self.righttree == nil thenself.righttree = self:new(nil,nil,data);PG.Log("self's rightnode is nil ")elseself.righttree.data = data;endendendfunction pinghengtree.FindRoot(rt,data)if rt == nil thenreturn nil;endif rt.data == data thenreturn rt;elselocal t = nill;t = pinghengtree.FindRoot(rt.lefttree,data)if t ~= nil thenreturn t;endt = pinghengtree.FindRoot(rt.righttree,data)if t ~= nil thenreturn t;endreturn nil;endendfunction pinghengtree.CreateNode(rt,data)if rt.data < data thenif rt.righttree ~= nil thenreturn pinghengtree.CreateNode(rt.righttree,data);elselocal tree = pinghengtree.Class();rt.righttree= tree:new(nil,nil,data);return rt.righttree;endendif rt.data == data thenreturn rt;endif rt.data > data thenif rt.lefttree ~= nil thenreturn pinghengtree.CreateNode(rt.lefttree,data);elselocal tree = pinghengtree.Class();rt.lefttree = tree:new(nil,nil,data);return rt.lefttree;endendendlocal datali= {1,3,5,7,2,4,6,8,9,10};function pinghengtree.Class()return tree;endfunction pinghengtree.PrintTree(rt)if rt ~= nil thenPG.Log(rt.data);endif rt.lefttree~= nil thenpinghengtree.PrintTree(rt.lefttree);endif rt.righttree~= nil thenpinghengtree.PrintTree(rt.righttree);endendfunction pinghengtree.CreateTree(rt,datalist) -- dt is data list for i = 2,#datalist dopinghengtree.CreateNode(rt,datalist[i]);endend-- pinghengtree.Test = function( )-- print("tet");-- endfunction pinghengtree.Test()print("tet");end
最后是main.lua文件<pre name="code" class="plain">local datalist = {1,3,5,7,2,4,6,8,9,10};local tree = treeRoot:new(nil,nil,datalist[1]);pinghengtree.CreateTree(tree,datalist);for i = 1,10 dolocal newRoot = pinghengtree.FindRoot(tree,i);PG.Log(newRoot.data);end
pinghengtree.PrintTree(tree);
--后续会加入新的内容 为什么用lua来实现 lua简单啊 不像c++ 内存处理 指针 繁杂的语法就是大大的障碍 还是脚本比较容易表达思想 改成c++也容易
0 0
- 平衡二叉树的简单建立--示例
- 平衡二叉树的建立
- java实现平衡二叉树的建立
- 数据结构之 平衡二叉树的建立
- Treap--简单的平衡二叉搜索树
- 数据结构与算法分析之平衡二叉树的建立
- 建立平衡二叉树(AVL)
- 建立平衡二叉树+层次遍历
- 平衡二叉树的
- (模板题)sdut 3374 数据结构实验之查找二:平衡二叉树(平衡二叉树的建立)
- 简单二叉树的建立和遍历
- 平衡二叉树(AVL树)的简单实现
- 平衡二叉树与红黑树的简单知识
- Spring 建立简单的示例
- 平衡二叉树的建立,查找,插入,调整,遍历的C语言实现
- 平衡二叉树的创建
- 平衡二叉树的使用
- 平衡二叉树的判断
- vim常用命令
- scrollView轮播
- Volley的基本使用
- oracle 面试题
- 解决mysql无法远程登录的问题
- 平衡二叉树的简单建立--示例
- 暑假已开始,读书也开始
- 线性表的顺序表示和实现(定长顺序表)
- 注解
- Android SurfaceView用法
- JAVA 动态代理(proxy)的实现和源码分析
- FusionChart
- Class.getSimpleName()的作用
- Qt/C++ 数据库SQL 增删改查 语句示例