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语言中指针常量和常量指针的区别,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • 详解C++中变量的初始化规则

    详解C++中变量的初始化规则

    这篇文章详细介绍了关于C++中变量的初始化规则,C++如果不对变量初始化,可能会导致很多后果,所以学习C++变量初始化规则就很重要了,下面一起来看看
    2016-08-08
  • c++ 预处理之正整型实现方法

    c++ 预处理之正整型实现方法

    这篇文章主要介绍了c++ 预处理之正整型实现方法,需要的朋友可以参考下
    2017-07-07
  • C++与C语言的区别你知道吗

    C++与C语言的区别你知道吗

    这篇文章主要为大家详细介绍了C++与C的区别,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-03-03
  • 详解C语言中数据的存储

    详解C语言中数据的存储

    这篇文章主要为大家介绍了C语言中数据的存储,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2021-11-11
  • C++设计模式之代理模式

    C++设计模式之代理模式

    这篇文章主要介绍了C++设计模式之代理模式,本文讲解了什么是代理模式、代理模式的使用场合、代理模式的实现代码等内容,需要的朋友可以参考下
    2014-10-10
  • C语言中逻辑运算符与条件运算符的学习教程

    C语言中逻辑运算符与条件运算符的学习教程

    这篇文章主要介绍了C语言中逻辑运算符与条件运算符的学习教程,条件运算符问号即三目运算符使用起来十分方便,需要的朋友可以参考下
    2016-04-04
  • C++实现图片转base64的示例代码

    C++实现图片转base64的示例代码

    Base64就是一种 基于64个可打印字符来表示二进制数据的表示方法,本文主要为大家详细介绍了如何使用C++实现图片转base64,需要的可以参考下
    2024-04-04
  • Qt实现带字数限制的文字输入框

    Qt实现带字数限制的文字输入框

    这篇文章介绍了Qt实现带字数限制文字输入框的方法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-04-04
  • C语言 文件操作解析详解及实例代码

    C语言 文件操作解析详解及实例代码

    这篇文章主要介绍了C语言 文件操作解析详解及实例代码的相关资料,需要的朋友可以参考下
    2016-11-11

最新评论