C++非递归队列实现二叉树的广度优先遍历

 更新时间:2015年07月11日 09:13:56   作者:优雅先生  
这篇文章主要介绍了C++非递归队列实现二叉树的广度优先遍历,实例分析了遍历二叉树相关算法技巧,并附带了两个相关算法实例,需要的朋友可以参考下

本文实例讲述了C++非递归队列实现二叉树的广度优先遍历。分享给大家供大家参考。具体如下:

广度优先非递归二叉树遍历(或者说层次遍历):

void widthFirstTraverse(TNode* root) {
  queue<TNode*> q;   // 队列
  q.enqueue(root);
  TNode* p;
  while(q.hasElement()) {
   p = q.dequeue();  // 队首元素出队列
   visit(p);     // 访问p结点
   if(p->left)
     q.enqueue(p->left);
   if(p->right)
     q.enqueue(p->right);
  } 
}

附带两个相关示例:

1. 递归先序遍历二叉树

void preTraverse(TNode* root) {
  if(!root)
   return;
  visit(root);
  preTraverse(root->left);
  preTraverse(root->Right);
}

2. 非递归先序遍历二叉树

void preTraverseNonRecursive(TNode* root) {
  stack<TNode> stack;  // 栈
  stack.push(root);
  TNode* p;
  while(!stack.isEmpty()) { // 栈非空
   p = stack.pop();
   visit(p);
   if(p->pRight)
     s.push(p->pRight);
   if(p->pLeft)
     s.push(p->pLeft);
  }
}

希望本文所述对大家的C++程序设计有所帮助。

相关文章

  • 简单聊聊C++中线程的原理与实现

    简单聊聊C++中线程的原理与实现

    C++11 引入了多线程支持,提供了一套基本的线程库,包括线程、互斥量(mutex)、条件变量(condition_variable)等。这些组件可以帮助你在 C++ 程序中实现并发和多线程编程,本文就来和大家简单聊聊吧
    2023-03-03
  • 简要解读C++的动态和静态关联以及虚析构函数

    简要解读C++的动态和静态关联以及虚析构函数

    这篇文章主要介绍了简要解读C++的动态和静态关联以及虚析构函数,析构函数在C++编程中平时并不是太常用,需要的朋友可以参考下
    2015-09-09
  • C++中单链表操作的示例代码

    C++中单链表操作的示例代码

    这篇文章主要为大家详细介绍了C++中单链表操作的示例代码,主要包括单链表的创建、元素的插入和删除等。文中的代码简洁易懂,需要的可以参考一下
    2022-10-10
  • C++如何将vector数字写入到txt文件中

    C++如何将vector数字写入到txt文件中

    这篇文章主要介绍了C++如何将vector数字写入到txt文件中问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • 彻底掌握C语言strcat函数的用法

    彻底掌握C语言strcat函数的用法

    strcat是用来拼接字符串的,它会将参数 src 字符串复制到参数 dest 所指的字符串尾部,本章带你了解它的使用并模拟实现它
    2022-05-05
  • C++实现LeetCode(158.用Read4来读取N个字符之二 - 多次调用)

    C++实现LeetCode(158.用Read4来读取N个字符之二 - 多次调用)

    这篇文章主要介绍了C++实现LeetCode(158.用Read4来读取N个字符之二 - 多次调用),本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-07-07
  • 基于C++的农夫过河问题算法设计与实现方法

    基于C++的农夫过河问题算法设计与实现方法

    这篇文章主要介绍了基于C++的农夫过河问题算法设计与实现方法,简单描述了农夫过河问题,并结合实例形式详细分析了基于C++实现农夫过河问题的相关算法实现步骤与操作技巧,需要的朋友可以参考下
    2017-09-09
  • c++ 虚继承,多继承相关总结

    c++ 虚继承,多继承相关总结

    这篇文章主要介绍了c++虚继承,多继承相关总结,帮助大家更好的理解和学习使用c++,感兴趣的朋友可以了解下
    2021-03-03
  • c语言实现可自定义的游戏地图

    c语言实现可自定义的游戏地图

    这篇文章主要为大家详细介绍了c语言实现可自定义的游戏地图,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • Prim(普里姆)算法求最小生成树的思想及C语言实例讲解

    Prim(普里姆)算法求最小生成树的思想及C语言实例讲解

    Prim算法能够在带权的图中搜索出最小生成树,这也是各大ACM和面试及考研题目中的热点,下面我们就来详细看一下Prim(普里姆)算法求最小生成树的思想及C语言实例讲解
    2016-06-06

最新评论