主题:Avl平衡二叉树 win32 SDK
1 概述
本文档适用于C语言开发人员,文档详细讲述Avl平衡二叉树SDK中每个函数的
用法以及源码示例。
2 Avl平衡二叉树介绍
参考相关文档。
3 Avl二叉树SDK技术特点
支持以下功能:
1、支持自定义键值比较函数
2、支持删除节点回调函数
3、支持插入节点
4、支持根据键值进行精确查询节点
5、支持根据键值进行精确删除节点
6、支持从头到尾(从尾到头)遍历树
非递归方式
7、支持从任意指定节点开始向下(或向上)遍历节点
8、支持范围查询(>、>=、<=、< )
9、支持删除头(尾)节点
10、支持获取头(尾)节点
11、支持获取节点数量
12、支持清空所有节点数量
13、支持节点缓冲
4 Avl二叉树应用场景
1、海量数据查询
2、数据排序
3、其它情况
5 定义说明
1、HAVLTREE
指向一个Avl树的句柄,即指向alv树的指针,定义如下:
typedef void* HAVLTREE;
2、POSITION
POSITION定义为一个指向Avl节点的指针,定义如下:
typedef void* POSITION;
3、HANDLE
定义如下:
typedef void* HANDLE;
在本文里指Avl节点中用户数据
4、ONAVLCOMPARE
typedef int (* ONAVLCOMPARE)(void* pNodeKey, void* pOutKey);
参数说明:
1、void* pNodeKey
输入参数,为Avl树节点的键值指针
2、void* pOutKey
输入参数,为外部提供的键值
返回值:
> 0:说明此Avl树节点大于外部键值
= 0:说明此Avl树节点等于外部键值
< 0:说明此Avl树节点小于外部键值
5、avl节点内部定义如下:
typedef struct _BSTNODE
{
_BSTNODE* pParent; // 父节点
_BSTNODE* pLeftChild; // 左节点
_BSTNODE* pRightChild; // 右节点
char nHeight; // 高度
void* pKey; // 节点键值
HANDLE hValue; // 用户数据
}BSTNODE;
typedef BSTNODE* LPBSTNODE;
6、ONAVLDELETE
ONAVLDELETE为回调函数指针,在执行AvlDeleteTree和AvlRemoveAll
函数释放树节点时,对每个被删除的节点都执行此回调函数,在回调函数中
处理与节点相关的操作。
定义如下:
typedef bool (* ONAVLDELETE)(POSITION pos, void* pInputPara);
参数:
1)POSITION pos
被删除Avl节点句柄(指针)
2)void* pInputPara
输入参数指针,由AvlDeleteTree和AvlRemoveAll函数的参数中提供。
7、头节点
Avl树中键值最小的节点
8、尾节点
Avl树中键值最大的节点
9、下一节点
Avl树中键值比当前节点大的第一个节点
10、上一节点
Avl树中键值比当前节点小的第一个节点
6 avl平衡二叉树SDK功能函数
6.1 AvlCreateTree ()
1、功能说明
此函数用来生成一个FIFO消息队列,执行成功后返回消息队列句柄,之后对
此Avl树的操作都引用此句柄。
2、函数原型
HAVLTREE AvlCreateTree(ONAVLCOMPARE OnCompare);
3、参数说明
1)ONAVLCOMPARE OnCompare
比较Avl树中节点和外部输入键值的函数指针,请参考上一章关于此函数指针的定义
4、返回值
返回Avl树的句柄
5、相关函数
AvlDeleteTree()
示例1:
功能:生成一个Avl树,比较函数是对int数据类型进行比较。
#include "AvlAPI.h"
int OnCompare(void* pNodeKey, void* pOutKey)
{
if (int(pNodeKey) > int(pOutKey))
{
return 1;
}
else if (int(pNodeKey) < int(pOutKey))
{
return -1;
}
else
{
return 0;
}
}
int main(int argc, char* argv[])
{
HAVLTREE hTree;
hTree = AvlCreateTree(OnCompare);
return 0;
}
示例2:
功能:生成一个Avl树,比较函数是对字符串进行比较。
#include "AvlAPI.h"
int OnCompare(void* pNodeKey, void* pOutKey)
{
return(strcmp((char *)pNodeKey, (char *)pOutKey));
}
int main(int argc, char* argv[])
{
HAVLTREE hTree;
hTree = AvlCreateTree(OnCompare);
return 0;
}
6.2 AvlDeleteTree()
1、功能说明
此函数用来删除Avl树以及树中的节点,删除后的Avl树句柄不能再被引用。
2、函数原型
void AvlDeleteTree(HAVLTREE hTree, ONAVLDELETE OnDelete = NULL,
void* pInputPara = NULL);
3、参数说明
1)HAVLTREE hTree
Avl树句柄。
2)ONAVLDELETE OnDelete = NULL
参考上一章关于此函数指针的说明,如果此参数设置为NULL,则在删除Avl
树时不调用此回调函数。
3)void* pInputPara;
由开发人员设置自己的数据,一般为结构体或对象的指针,由回调函数
使用。
4、返回值
无
6.3 AvlAddKey()
1、功能说明
此函数用来在Avl树中增加节点。
2、函数原型
bool AvlAddKey(HAVLTREE hTree, void* pKey, HANDLE hValue,
POSITION& pos);
3、参数说明
1)HAVLTREE hTree
消息队列句柄,此句柄由MQCreateQueue函数生成。
2)void* pKey
pKey为键值,pKey可以本身是键值,也可以是指向某地址的指针,在
AvlAddKey函数执行时直接把pKey值赋给Avl节点中的pKey成员变量。
3)HANDLE hValue
用户数据句柄(指针)在,AvlAddKey函数执行时直接把hValue赋给Avl
节点中的hValue成员变量。
4)POSITION& pos;
输出参数,返回新增节点的句柄,如果新增节点失败,pos值为NULL。
4、返回值
1)true
添加节点成功。
2)false
添加节点失败,树中存在相同主键的节点
6.4 AvlRemoveKey()
1、功能说明
此函数用来在Avl树中根据键值删除指定的节点。
2、函数原型
bool AvlRemoveKey(HAVLTREE hTree, void* pKey, HANDLE& hValue);
3、参数说明
1)HAVLTREE hTree
输入参数
Avl树句柄,此句柄由AvlCreateTree函数生成。
2)void* pKey
输入参数,删除节点的键值
3)HANDLE& hValue
输出参数
返回要删除节点的用户数据句柄(指针)
4、返回值
1)true
从Avl树中成功删除一个节点。
2)false
在Avl中不存在指定键值的节点
6.5 AvlGetCount()
1、功能说明
此函数用来获取Avl树中节点的数量。
2、函数原型
int AvlGetCount(HAVLTREE hTree);
3、参数说明
1)HAVLTREE hTree
Avl树句柄。
4、返回值
返回消息的数量
6.6 AvlRemoveAll()
1、功能说明
此函数用来清除Avl树中所有的节点。
2、函数原型
void AvlRemoveAll(HAVLTREE hTree);
3、参数说明
1)HAVLTREE hTree
Avl树句柄。
4、返回值
返回消息的数量
6.7 AvlGetKeyPosition()
1、功能说明
此函数用来根据键值在Avl树中查询节点,返回节点的句柄。
2、函数原型
POSITION AvlGetKeyPosition(HAVLTREE hTree, void* pKey);
3、参数说明
1)HAVLTREE hTree
Avl树句柄。
2) 查询节点用的键值
4、返回值
返回节点的句柄,如果返回值为NULL,则没有查询到节点。
6.8 AvlGetKeyValue()
1、功能说明
此函数用来根据键值在Avl树中查询节点,返回节点的用户数据。
2、函数原型
bool AvlGetKeyValue(HAVLTREE hTree, void* pKey, HANLDE& hValue);
3、参数说明
1)HAVLTREE hTree
Avl树句柄。
2) void* pKey
查询节点用的键值
3) HANDLE& hValue
输出参数,返回节点用户数据
4、返回值
true:查询到该键值的节点
false:没有此键值的节点
6.9 AvlGetHeadPosition()
1、功能说明
此函数用来返回Avl树中的头节点即键值最小的节点。
2、函数原型
POSITION AvlGetHeadPosition(HAVLTREE hTree);
3、参数说明
1)HAVLTREE hTree
Avl树句柄。
4、返回值
返回节点句柄,如果Avl树中没有节点返回值为NULL,否则返回非空值。
6.10 AvlGetNextPosition()
1、功能说明
此函数用来返回Avl树中指定节点的下一个节点,下一个节点的键值大于当前节点的键值,如果当前节点是最后一个节点,则返回NULL。
2、函数原型
POSITION AvlGetNextPosition(POSITION pos);
3、参数说明
1)HAVLTREE hTree
Avl树句柄。
2)POSITION pos
指定节点
4、返回值
返回节点句柄,如果Avl树中没有节点返回值为NULL,否则返回非空值。
示例:参考AvlGetHeadPosition
6.11 AvlGetPrevPosition()
1、功能说明
此函数用来返回Avl树中指定节点的上一个节点,上一个节点的键值小于当前节点的键值,如果当前节点是头节点,则返回NULL。
2、函数原型
POSITION AvlGetPrevPosition(POSITION pos);
3、参数说明
1)HAVLTREE hTree
Avl树句柄。
2)POSITION pos
指定节点
4、返回值
返回节点句柄,如果Avl树中没有节点返回值为NULL,否则返回非空值。
示例:参考AvlGetHeadPosition
6.12 AvlGetTailPosition()
1、功能说明
此函数用来返回Avl树中的尾节点即键值最大的节点。
2、函数原型
POSITION AvlGetTailPosition(HAVLTREE hTree);
3、参数说明
1)HAVLTREE hTree
Avl树句柄。
4、返回值
返回节点句柄,如果Avl树中没有节点返回值为NULL,否则返回非空值。
6.13 AvlRemoveHead()
1、功能说明
此函数删除Avl树中的头节点即键值最小的节点,同时返回被删除节点的句柄值。注意使用此函数时,必须确保树中必须非空,否则运行出异常错误。
2、函数原型
HANDLE AvlRemoveHead(HAVLTREE hTree);
3、参数说明
1)HAVLTREE hTree
Avl树句柄。
4、返回值
返回被删除头节点的句柄值。
6.14 AvlRemoveTail()
1、功能说明
此函数删除Avl树中的尾节点即键值最大的节点,同时返回被删除节点的句柄值。注意使用此函数时,必须确保树中必须非空,否则运行出异常错误。
2、函数原型
HANDLE AvlRemoveTail(HAVLTREE hTree);
3、参数说明
1)HAVLTREE hTree
Avl树句柄。
4、返回值
返回被删除尾节点的句柄值。
6.15 AvlGetFirstPosGEKey()
1、功能说明
此函数返回Avl树中的第一个键值大于等于指定键值的节点,如果没有满足条件的节点返回NULL。
2、函数原型
POSITION AvlGetFirstPosGEKey(HAVLTREE hTree);
3、参数说明
1)HAVLTREE hTree
Avl树句柄。
4、返回值
返回节点句柄。
6.16 AvlGetFirstPosGTKey()
1、功能说明
此函数返回Avl树中的第一个键值大于指定键值的节点,如果没有满足条件的节点返回NULL。
2、函数原型
POSITION AvlGetFirstPosGTKey(HAVLTREE hTree);
3、参数说明
1)HAVLTREE hTree
Avl树句柄。
4、返回值
返回节点句柄。
6.17 AvlGetFirstPosSEKey()
1、功能说明
此函数返回Avl树中的第一个键值小于等于指定键值的节点,如果没有满足条件的节点返回NULL。
2、函数原型
POSITION AvlGetFirstPosSEKey(HAVLTREE hTree);
3、参数说明
1)HAVLTREE hTree
Avl树句柄。
4、返回值
返回节点句柄。
6.18 AvlGetFirstPosSTKey()
1、功能说明
此函数返回Avl树中的第一个键值小于指定键值的节点,如果没有满足条件的节点返回NULL。
2、函数原型
POSITION AvlGetFirstPosSEKey(HAVLTREE hTree);
3、参数说明
1)HAVLTREE hTree
Avl树句柄。
4、返回值
返回节点句柄。
6.19 AvlGetPosKey()
1、功能说明
此函数用来获取指定节点的键值。
2、函数原型
void* AvlGetPosKey(POSITION pos);
3、参数说明
1)POSITION pos
节点句柄
4、返回值
返回节点键值。
5、相关函数
AvlGetPosValue()
示例:
参考函数AvlGetHeadPosition示例中的关于AvlGetPosKey用法。
6.20 AvlGetPosValue()
1、功能说明
此函数用来获取指定节点的用户数据句。
2、函数原型
HANDLE AvlGetPosValue(POSITION pos);
3、参数说明
1)POSITION pos
节点句柄。
4、返回值
返回节点的句柄值。
5、相关函数
AvlGetPosKey()
示例:
参考函数AvlGetHeadPosition示例中的关于AvlGetPosValue用法。
6.21 AvlSetPosValue()
1、功能说明
此函数用来设置指定节点的用户数据。
2、函数原型
void AvlSetPosValue(POSITION pos, HANDLE hValue);
3、参数说明
1)HAVLTREE hTree
Avl树句柄。
4、返回值
返回被删除尾节点的句柄值。
本文档适用于C语言开发人员,文档详细讲述Avl平衡二叉树SDK中每个函数的
用法以及源码示例。
2 Avl平衡二叉树介绍
参考相关文档。
3 Avl二叉树SDK技术特点
支持以下功能:
1、支持自定义键值比较函数
2、支持删除节点回调函数
3、支持插入节点
4、支持根据键值进行精确查询节点
5、支持根据键值进行精确删除节点
6、支持从头到尾(从尾到头)遍历树
非递归方式
7、支持从任意指定节点开始向下(或向上)遍历节点
8、支持范围查询(>、>=、<=、< )
9、支持删除头(尾)节点
10、支持获取头(尾)节点
11、支持获取节点数量
12、支持清空所有节点数量
13、支持节点缓冲
4 Avl二叉树应用场景
1、海量数据查询
2、数据排序
3、其它情况
5 定义说明
1、HAVLTREE
指向一个Avl树的句柄,即指向alv树的指针,定义如下:
typedef void* HAVLTREE;
2、POSITION
POSITION定义为一个指向Avl节点的指针,定义如下:
typedef void* POSITION;
3、HANDLE
定义如下:
typedef void* HANDLE;
在本文里指Avl节点中用户数据
4、ONAVLCOMPARE
typedef int (* ONAVLCOMPARE)(void* pNodeKey, void* pOutKey);
参数说明:
1、void* pNodeKey
输入参数,为Avl树节点的键值指针
2、void* pOutKey
输入参数,为外部提供的键值
返回值:
> 0:说明此Avl树节点大于外部键值
= 0:说明此Avl树节点等于外部键值
< 0:说明此Avl树节点小于外部键值
5、avl节点内部定义如下:
typedef struct _BSTNODE
{
_BSTNODE* pParent; // 父节点
_BSTNODE* pLeftChild; // 左节点
_BSTNODE* pRightChild; // 右节点
char nHeight; // 高度
void* pKey; // 节点键值
HANDLE hValue; // 用户数据
}BSTNODE;
typedef BSTNODE* LPBSTNODE;
6、ONAVLDELETE
ONAVLDELETE为回调函数指针,在执行AvlDeleteTree和AvlRemoveAll
函数释放树节点时,对每个被删除的节点都执行此回调函数,在回调函数中
处理与节点相关的操作。
定义如下:
typedef bool (* ONAVLDELETE)(POSITION pos, void* pInputPara);
参数:
1)POSITION pos
被删除Avl节点句柄(指针)
2)void* pInputPara
输入参数指针,由AvlDeleteTree和AvlRemoveAll函数的参数中提供。
7、头节点
Avl树中键值最小的节点
8、尾节点
Avl树中键值最大的节点
9、下一节点
Avl树中键值比当前节点大的第一个节点
10、上一节点
Avl树中键值比当前节点小的第一个节点
6 avl平衡二叉树SDK功能函数
6.1 AvlCreateTree ()
1、功能说明
此函数用来生成一个FIFO消息队列,执行成功后返回消息队列句柄,之后对
此Avl树的操作都引用此句柄。
2、函数原型
HAVLTREE AvlCreateTree(ONAVLCOMPARE OnCompare);
3、参数说明
1)ONAVLCOMPARE OnCompare
比较Avl树中节点和外部输入键值的函数指针,请参考上一章关于此函数指针的定义
4、返回值
返回Avl树的句柄
5、相关函数
AvlDeleteTree()
示例1:
功能:生成一个Avl树,比较函数是对int数据类型进行比较。
#include "AvlAPI.h"
int OnCompare(void* pNodeKey, void* pOutKey)
{
if (int(pNodeKey) > int(pOutKey))
{
return 1;
}
else if (int(pNodeKey) < int(pOutKey))
{
return -1;
}
else
{
return 0;
}
}
int main(int argc, char* argv[])
{
HAVLTREE hTree;
hTree = AvlCreateTree(OnCompare);
return 0;
}
示例2:
功能:生成一个Avl树,比较函数是对字符串进行比较。
#include "AvlAPI.h"
int OnCompare(void* pNodeKey, void* pOutKey)
{
return(strcmp((char *)pNodeKey, (char *)pOutKey));
}
int main(int argc, char* argv[])
{
HAVLTREE hTree;
hTree = AvlCreateTree(OnCompare);
return 0;
}
6.2 AvlDeleteTree()
1、功能说明
此函数用来删除Avl树以及树中的节点,删除后的Avl树句柄不能再被引用。
2、函数原型
void AvlDeleteTree(HAVLTREE hTree, ONAVLDELETE OnDelete = NULL,
void* pInputPara = NULL);
3、参数说明
1)HAVLTREE hTree
Avl树句柄。
2)ONAVLDELETE OnDelete = NULL
参考上一章关于此函数指针的说明,如果此参数设置为NULL,则在删除Avl
树时不调用此回调函数。
3)void* pInputPara;
由开发人员设置自己的数据,一般为结构体或对象的指针,由回调函数
使用。
4、返回值
无
6.3 AvlAddKey()
1、功能说明
此函数用来在Avl树中增加节点。
2、函数原型
bool AvlAddKey(HAVLTREE hTree, void* pKey, HANDLE hValue,
POSITION& pos);
3、参数说明
1)HAVLTREE hTree
消息队列句柄,此句柄由MQCreateQueue函数生成。
2)void* pKey
pKey为键值,pKey可以本身是键值,也可以是指向某地址的指针,在
AvlAddKey函数执行时直接把pKey值赋给Avl节点中的pKey成员变量。
3)HANDLE hValue
用户数据句柄(指针)在,AvlAddKey函数执行时直接把hValue赋给Avl
节点中的hValue成员变量。
4)POSITION& pos;
输出参数,返回新增节点的句柄,如果新增节点失败,pos值为NULL。
4、返回值
1)true
添加节点成功。
2)false
添加节点失败,树中存在相同主键的节点
6.4 AvlRemoveKey()
1、功能说明
此函数用来在Avl树中根据键值删除指定的节点。
2、函数原型
bool AvlRemoveKey(HAVLTREE hTree, void* pKey, HANDLE& hValue);
3、参数说明
1)HAVLTREE hTree
输入参数
Avl树句柄,此句柄由AvlCreateTree函数生成。
2)void* pKey
输入参数,删除节点的键值
3)HANDLE& hValue
输出参数
返回要删除节点的用户数据句柄(指针)
4、返回值
1)true
从Avl树中成功删除一个节点。
2)false
在Avl中不存在指定键值的节点
6.5 AvlGetCount()
1、功能说明
此函数用来获取Avl树中节点的数量。
2、函数原型
int AvlGetCount(HAVLTREE hTree);
3、参数说明
1)HAVLTREE hTree
Avl树句柄。
4、返回值
返回消息的数量
6.6 AvlRemoveAll()
1、功能说明
此函数用来清除Avl树中所有的节点。
2、函数原型
void AvlRemoveAll(HAVLTREE hTree);
3、参数说明
1)HAVLTREE hTree
Avl树句柄。
4、返回值
返回消息的数量
6.7 AvlGetKeyPosition()
1、功能说明
此函数用来根据键值在Avl树中查询节点,返回节点的句柄。
2、函数原型
POSITION AvlGetKeyPosition(HAVLTREE hTree, void* pKey);
3、参数说明
1)HAVLTREE hTree
Avl树句柄。
2) 查询节点用的键值
4、返回值
返回节点的句柄,如果返回值为NULL,则没有查询到节点。
6.8 AvlGetKeyValue()
1、功能说明
此函数用来根据键值在Avl树中查询节点,返回节点的用户数据。
2、函数原型
bool AvlGetKeyValue(HAVLTREE hTree, void* pKey, HANLDE& hValue);
3、参数说明
1)HAVLTREE hTree
Avl树句柄。
2) void* pKey
查询节点用的键值
3) HANDLE& hValue
输出参数,返回节点用户数据
4、返回值
true:查询到该键值的节点
false:没有此键值的节点
6.9 AvlGetHeadPosition()
1、功能说明
此函数用来返回Avl树中的头节点即键值最小的节点。
2、函数原型
POSITION AvlGetHeadPosition(HAVLTREE hTree);
3、参数说明
1)HAVLTREE hTree
Avl树句柄。
4、返回值
返回节点句柄,如果Avl树中没有节点返回值为NULL,否则返回非空值。
6.10 AvlGetNextPosition()
1、功能说明
此函数用来返回Avl树中指定节点的下一个节点,下一个节点的键值大于当前节点的键值,如果当前节点是最后一个节点,则返回NULL。
2、函数原型
POSITION AvlGetNextPosition(POSITION pos);
3、参数说明
1)HAVLTREE hTree
Avl树句柄。
2)POSITION pos
指定节点
4、返回值
返回节点句柄,如果Avl树中没有节点返回值为NULL,否则返回非空值。
示例:参考AvlGetHeadPosition
6.11 AvlGetPrevPosition()
1、功能说明
此函数用来返回Avl树中指定节点的上一个节点,上一个节点的键值小于当前节点的键值,如果当前节点是头节点,则返回NULL。
2、函数原型
POSITION AvlGetPrevPosition(POSITION pos);
3、参数说明
1)HAVLTREE hTree
Avl树句柄。
2)POSITION pos
指定节点
4、返回值
返回节点句柄,如果Avl树中没有节点返回值为NULL,否则返回非空值。
示例:参考AvlGetHeadPosition
6.12 AvlGetTailPosition()
1、功能说明
此函数用来返回Avl树中的尾节点即键值最大的节点。
2、函数原型
POSITION AvlGetTailPosition(HAVLTREE hTree);
3、参数说明
1)HAVLTREE hTree
Avl树句柄。
4、返回值
返回节点句柄,如果Avl树中没有节点返回值为NULL,否则返回非空值。
6.13 AvlRemoveHead()
1、功能说明
此函数删除Avl树中的头节点即键值最小的节点,同时返回被删除节点的句柄值。注意使用此函数时,必须确保树中必须非空,否则运行出异常错误。
2、函数原型
HANDLE AvlRemoveHead(HAVLTREE hTree);
3、参数说明
1)HAVLTREE hTree
Avl树句柄。
4、返回值
返回被删除头节点的句柄值。
6.14 AvlRemoveTail()
1、功能说明
此函数删除Avl树中的尾节点即键值最大的节点,同时返回被删除节点的句柄值。注意使用此函数时,必须确保树中必须非空,否则运行出异常错误。
2、函数原型
HANDLE AvlRemoveTail(HAVLTREE hTree);
3、参数说明
1)HAVLTREE hTree
Avl树句柄。
4、返回值
返回被删除尾节点的句柄值。
6.15 AvlGetFirstPosGEKey()
1、功能说明
此函数返回Avl树中的第一个键值大于等于指定键值的节点,如果没有满足条件的节点返回NULL。
2、函数原型
POSITION AvlGetFirstPosGEKey(HAVLTREE hTree);
3、参数说明
1)HAVLTREE hTree
Avl树句柄。
4、返回值
返回节点句柄。
6.16 AvlGetFirstPosGTKey()
1、功能说明
此函数返回Avl树中的第一个键值大于指定键值的节点,如果没有满足条件的节点返回NULL。
2、函数原型
POSITION AvlGetFirstPosGTKey(HAVLTREE hTree);
3、参数说明
1)HAVLTREE hTree
Avl树句柄。
4、返回值
返回节点句柄。
6.17 AvlGetFirstPosSEKey()
1、功能说明
此函数返回Avl树中的第一个键值小于等于指定键值的节点,如果没有满足条件的节点返回NULL。
2、函数原型
POSITION AvlGetFirstPosSEKey(HAVLTREE hTree);
3、参数说明
1)HAVLTREE hTree
Avl树句柄。
4、返回值
返回节点句柄。
6.18 AvlGetFirstPosSTKey()
1、功能说明
此函数返回Avl树中的第一个键值小于指定键值的节点,如果没有满足条件的节点返回NULL。
2、函数原型
POSITION AvlGetFirstPosSEKey(HAVLTREE hTree);
3、参数说明
1)HAVLTREE hTree
Avl树句柄。
4、返回值
返回节点句柄。
6.19 AvlGetPosKey()
1、功能说明
此函数用来获取指定节点的键值。
2、函数原型
void* AvlGetPosKey(POSITION pos);
3、参数说明
1)POSITION pos
节点句柄
4、返回值
返回节点键值。
5、相关函数
AvlGetPosValue()
示例:
参考函数AvlGetHeadPosition示例中的关于AvlGetPosKey用法。
6.20 AvlGetPosValue()
1、功能说明
此函数用来获取指定节点的用户数据句。
2、函数原型
HANDLE AvlGetPosValue(POSITION pos);
3、参数说明
1)POSITION pos
节点句柄。
4、返回值
返回节点的句柄值。
5、相关函数
AvlGetPosKey()
示例:
参考函数AvlGetHeadPosition示例中的关于AvlGetPosValue用法。
6.21 AvlSetPosValue()
1、功能说明
此函数用来设置指定节点的用户数据。
2、函数原型
void AvlSetPosValue(POSITION pos, HANDLE hValue);
3、参数说明
1)HAVLTREE hTree
Avl树句柄。
4、返回值
返回被删除尾节点的句柄值。