最近看数据结构看到了二叉排序树,便照着书上的例子自己写了个头文件。
但是书上没有写到如何将二叉排序树输出,便自己琢磨着写了个,源代码中负责输出的部分代码如下:
template <typename T>
inline void BiSortTree<T>::OutPut()
{
int line=this->Depth();
bsTree<int> **ad=(bsTree<int>**)malloc(line*sizeof(bsTree<int>*)); //bsTree是二叉树的一个节点,包含key,lchild,rchild,parent三项
for(int i=0;i<line;i++)
ad[i]=(bsTree<int>*)malloc(pow(2.0,i)*sizeof(bsTree<int>)); //ad[i]指向二叉排序树的第i层,数组ad[i]的长度为二叉排序树第i层的长度
for(int i=0;i<line;i++)
for(int j=0;j<pow(2.0,i);j++)
{
ad[i][j].lchild=NULL;
ad[i][j].rchild=NULL;
ad[i][j].parent=NULL;
}
ad[0]->key=this->root->key; //root是一个指向bsTree的指针,作为二叉排序树的根节点
ad

本文介绍了一种实现二叉排序树层次遍历输出的方法,通过创建多个数组来存储不同层级的节点,然后逐层遍历并打印节点。尽管功能已实现,但作者认为这种方法内存占用大,效率不高,期待有更优解决方案。

8660

被折叠的 条评论
为什么被折叠?



