树(数据结构)

一、层次遍历
如图:
层次遍历的过程
通过它的遍历顺序,可以选出队列来作为辅助的存储空间最为合适
大体思路:

Queue < const BinTreeNode <Type> * > q;

template <class Type>
void LevelOrder<Type> :: advance ( ) {
    if ( q.IsEmpty ( ) ) {
       if ( current == NULL ) 
          throw BadIterator(“Advance past end”);
        current = NULL;  return;
    }
    current = q.DeQueue ( );                //退队    
    if ( current→leftChild != NULL )          //左子女
        q.EnQueue ( current→leftChild);   //进队列
    if ( current→rightChild != NULL )        //右子女
        q.EnQueue ( current→rightchild ); //进队列
}

二、
Thread Tree(线索树)
指充分利用树中的空指针域
三、优先队列
通过小顶堆和大顶堆实现
以小顶堆为例:
是通过二叉树来实现的,既保证父节点要小于等于子节点就好
小顶堆的删除操作:
例如根节点被删出了,则将最后一个节点放上去,然后再调整为一个小顶堆
时间复杂度:最好:0 最坏:O(logn)
小顶堆的添加操作:
将添加的节点加入作为最后的一个节点,,之后再做调整。
时间复杂度:最好:0 最坏:O(logn)
四、一棵普通树变成二叉树

口诀:兄弟手拉手,向下倾斜45°
如图:
从根节点开始,他的第一个孩子作为他的左孩子,兄弟节点作为右孩子
这里写图片描述这里写图片描述

五、树的广度遍历和深度遍历

广度遍历:层次遍历
深度遍历:先序遍历,后序遍历

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值