最近看数据结构看到了二叉排序树,便照着书上的例子自己写了个头文件。
但是书上没有写到如何将二叉排序树输出,便自己琢磨着写了个,源代码中负责输出的部分代码如下:
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[0]->lchild=this->root->lchild;
ad[0]->rchild=this-&g