二叉排序树的树形结构输出

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

最近看数据结构看到了二叉排序树,便照着书上的例子自己写了个头文件。

但是书上没有写到如何将二叉排序树输出,便自己琢磨着写了个,源代码中负责输出的部分代码如下:

 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值