首页
社区
课程
招聘
[原创]平衡二叉树AVL
发表于: 2010-3-13 15:19 8184

[原创]平衡二叉树AVL

2010-3-13 15:19
8184

纯C,支持添加和删除节点,各种次序(迭代而非递归)遍历整个树,开销小,适合Windows/Linux和嵌入式系统使用。
Demo演示了两组操作,一组是通过空格或左键,演示把一组malloc()出来的一组地址加入tree,然后逐个删除。为了重现操作,方便调试程序,使用了A盘存储临时文件。我的系统上A盘是RAMDisk,如果没有A盘,你可以用subst命令模拟一个。另一组通过INSERT和DELETE键操作。按一下INSERT,就会把插入点用蓝色加亮,再按一下INSERT完成插入操作。插入之后树的局部或整体有可能会被调整,以保证满足AVL树的定义。删除操作类似,第一次按DELETE加亮被删除的节点,再次按DELETE完成删除操作。

有什么用途呢?主要用来作排序和查找。

排序:把一组待排序的数据插入到一颗AVL树,再按中序遍历输出,就可以得到升序或降序的结果。

查找:把本机跟外界的所有TCP连接的socket,以本地端口:远程IP和端口组成KEY,放到一个AVL树里面,就能很快找到对应的socket。建立新连接时插入新的节点,连接断开时删除对应的节点。对于这样离散的数据,用数组管理太大了,用链表效率不高。用映射(MAP)是可以,但需要C++、C#或者Java等语言才有MAP类。
程序截图如下:


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

上传的附件:
收藏
免费 7
支持
分享
最新回复 (4)
雪    币: 5334
活跃值: (3724)
能力值: ( LV13,RANK:283 )
在线值:
发帖
回帖
粉丝
2
支持一下啊,看者挺好
2010-3-13 15:26
0
雪    币: 2362
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
纯c? MFC?
2010-3-20 23:02
0
雪    币: 337
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
值得学习啊!
2010-3-21 20:21
0
雪    币: 127
活跃值: (40)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
5
你的问题应该用hash解决,二叉树用错地方了。
2010-6-28 06:56
0
游客
登录 | 注册 方可回帖
返回
//