美文网首页
66_二叉树结构的层次遍历

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

作者: 编程半岛 | 来源:发表于2018-07-27 17:53 被阅读5次

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

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

相关文章

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

    关键词:二叉树的层次遍历 0. 二叉树的遍历 二叉树的遍历是指:从根结点出发,按照某种次序依次访问二叉树中的所有结...

  • 二叉树 基础操作

    二叉树的使用 二叉树结构 先序创建二叉树 DFS 先序遍历二叉树 中序遍历二叉树 后序遍历二叉树 BFS 层次遍历...

  • 07-13:二叉树review1

    二叉树review1: 1、二叉树结构 1)二叉树的遍历 0)递归/迭代实现 前/中/后序遍历 递归 迭代 层次遍...

  • 二叉树的蛇形层次遍历(LeetCode.103)

    题目 解析 首先参考二叉树的层次遍历层次遍历二叉树(LeetCode--102二叉树的层次遍历)[https://...

  • 二叉树遍历

    二叉树遍历(非递归写法) 先序遍历 中序遍历 后序遍历 层次遍历 给定一个二叉树,返回其按层次遍历的节点值。 (即...

  • 二叉树的基本算法

    一、二叉树的递归遍历 二、二叉树的层次遍历 二叉树的层次遍历是指二叉树从上到下,从左到右遍历数据。同一层中的节点访...

  • 二叉树的四种遍历算法实现(Java实现)

    二叉树的遍历 我用下图的树为例,做树的遍历:image 二叉树结构 树节点的定义: 中序遍历 先处理左子树,然后处...

  • 二叉树的层次遍历

    三道层次遍历题,同一个模板,这边用到的是两个队列 二叉树的层次遍历 LeetCode题目地址 二叉树的层次遍历 加...

  • 二叉树遍历

    首先,我们来看一下二叉树结构。 二叉树有三种遍历方式: 前序遍历:根左右 ABDCEF 中序遍历:左根右 DBAE...

  • Binary Tree - Swift 相关实现

    原文参考 节点 翻转二叉树 前序遍历 中序遍历 后序遍历 层次遍历/广度优先遍历 深度优先遍历 判断二叉排序树

网友评论

      本文标题:66_二叉树结构的层次遍历

      本文链接:https://www.haomeiwen.com/subject/wzugmftx.html