简单二叉树类,简单二叉树类
【 tulaoshi.com - C语言心得技巧 】
简单二叉树类
翻译: 丁顺光
下载本文示例源代码
本文由DigitalConvict供稿。
原文出处:http://www.codeguru.com/algorithms/SimpleBinaryTree.html
环境: (无特别限制) 在VC6 上开发
我不会详细介绍二叉树理论的详细细节,因为这些东西,Per Nilsson 已经在他的“二叉树”中讨论过了,你可以在如下地址here找到详细的细节。
对半查找树对于找到在一个列表中很少变化的项来说是很有用的。添加和删除操作的开销是很大的,只主要是因为对半查找树的平衡性所决定的。
我们可以这样说这个类是在同一主题上的一个不同的执行方式。
执行细节
创建这棵树
要创建二叉树,可以简单的创建一个CSimpleBinaryTree 对象并初始化。
#define MAXELEMS 100CSimpleBinaryTree btree;btree.Initialise(MAXELEMS,sizeof(CSomeObject));或
btree.Initialise(MAXELEMS,sizeof(CSomeObject), someCompareFunction);或
btree.Initialise(MAXELEMS,sizeof(CSomeObject), someCompareFunction, nGrowTrigger, nGrowByValue, nShrinkTrigger, nShrinkByValue);"someCompareFunction"是一个有两个指针参数的函数的指针,这个函数根据第一个参数是否小于,等于,大于第二个参数而分别返回负数,0和正数。CSimpleBinaryTree 提供了一个通用的全局比较函数,它可以比较两个长整型的指针。
CSomeObject sObj; CSomeObject *psObj1=&sObj;CSomeObject psObj2;int nResult;nResult=btree.AddItem(&sObj);或
nResult=btree.AddItem(psObj1);或
nResult=btree.AddItem(psObj1, psObj2);AddItem() 函数返回两个值。第一个是整型结果。如果子项被成功添加了,子项的索引值会被成功返回,如果没有成功添加,就会返回错误代码:
BOOL bResult; bResult=RemoveItem(nIndex);如果该项被成功地从树中删除了,函数返回TRUE, 否则返回FALSE;
int nIndex; nIndex = btree.FindItem(psObj);或
CSomeObject *pFoundObject;nIndex = btree.FindItem(psObj,pFoundObject);FindItem() 返回两个值.如果子项存在,第一个值就是子项的索引值,如果不存在,赋值为ITEM_NOT_PRESENT value.第二个返回值是可选择的第二个参数值。如果子项被发现了,pFoundObject 将指向它在树中的对象,如果子项没有被发现,pFoundObject 赋为空;
来源:http://www.tulaoshi.com/n/20160129/1485299.html