66_二叉树结构的层次遍历

关键词:二叉树的层次遍历

0. 二叉树的遍历

二叉树的遍历是指:从根结点出发,按照某种次序依次访问二叉树中的所有结点,使得每个结点被访问一次,且仅被访问一次

1. 二叉树的层次遍历

  • 设计思路(游标)

提供一组遍历相关的函数,按层次访问二叉树中的数据元素。

函数 功能说明
begin() 初始化,准备进行遍历访问
next() 游标移动,指向下一个结点
current() 获取游标所指向的数据元素
end() 判断游标是否到达尾部

2. 层次遍历算法

  • 原料:class LinkQueue<T>;
  • 游标:LinkQueue<T>::front()
  • 思想:
    • begin():将根节点压入队列中
    • current():访问队头元素指向的数据元素
    • next()队头元素弹出,将队头元素的孩子压入队列中
    • end():判断队列是否为空
      层次遍历算法示例
    bool begin()
    {
        bool ret = ( root() != NULL );      // 判断根结点不为空

        if( ret )
        {
            m_queue.clear();        // 先清空队列

            m_queue.add(root());    // 将根结点添加到队列中
        }

        return ret;
    }

    bool end()
    {
        return (m_queue.length() == 0);
    }

    bool next()
    {
        bool ret = (m_queue.length() > 0);

        if( ret )
        {
            BTreeNode<T>* node = m_queue.front();   // 取出对头元素

            m_queue.remove();

            if( node->left )
            {
                m_queue.add(node->left);
            }

            if( node->right )
            {
                m_queue.add(node->right);
            }
        }

        return ret;
    }

    T current()
    {
        if( !end() )
        {
            return m_queue.front()->value;
        }
        else
        {
            THROW_EXCEPTION(InvalidOperationExcetion, "No value at current position...");
        }

    }

声明:此文章仅是本人在学习狄泰学院《数据结构实战开发教程》所做的笔记,文章中包含狄泰软件资料内容,一切版权归狄泰软件所有!
实验环境:ubuntu10 + Qt Creator2.4.1 + Qt SDK 4.7.4

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 目录 1、什么是树 2、相关术语 3、二叉树 3.1、二叉树的类型 3.2、二叉树的性质 3.3、二叉树的结构 3...
    我哈啊哈啊哈阅读 2,630评论 0 10
  • 一些概念 数据结构就是研究数据的逻辑结构和物理结构以及它们之间相互关系,并对这种结构定义相应的运算,而且确保经过这...
    Winterfell_Z阅读 6,152评论 0 13
  • 数据结构和算法--二叉树的实现 几种二叉树 1、二叉树 和普通的树相比,二叉树有如下特点: 每个结点最多只有两棵子...
    sunhaiyu阅读 6,582评论 0 14
  • 生活就像一盘菜,什么味道都有,有苦有甜有酸有咸,令人回味无穷。 人生短短数十载,为的是什么? 世上最爱的人等你呵护...
    share01阅读 309评论 0 1
  • 趴在桌子上,打算午休会,可脑子里一直在想“该写些什么呢?”眼睛虽闭,但脑子却在思考,心也越来越慌,很难达到休...
    慧声慧文阅读 384评论 0 2