首页 > 编程 > C++ > 正文

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

2020-05-23 14:18:47
字体:
来源:转载
供稿:网友

这篇文章主要介绍了C++非递归队列实现二叉树的广度优先遍历,实例分析了遍历二叉树相关算法技巧,并附带了两个相关算法实例,需要的朋友可以参考下

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

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

 

 
  1. void widthFirstTraverse(TNode* root) { 
  2. queue<TNode*> q; // 队列 
  3. q.enqueue(root); 
  4. TNode* p; 
  5. while(q.hasElement()) { 
  6. p = q.dequeue(); // 队首元素出队列 
  7. visit(p); // 访问p结点 
  8. if(p->left) 
  9. q.enqueue(p->left); 
  10. if(p->right) 
  11. q.enqueue(p->right); 
  12. }  

附带两个相关示例:

1. 递归先序遍历二叉树

 

 
  1. void preTraverse(TNode* root) { 
  2. if(!root) 
  3. return
  4. visit(root); 
  5. preTraverse(root->left); 
  6. preTraverse(root->Right); 

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

 

 
  1. void preTraverseNonRecursive(TNode* root) { 
  2. stack<TNode> stack; // 栈 
  3. stack.push(root); 
  4. TNode* p; 
  5. while(!stack.isEmpty()) { // 栈非空 
  6. p = stack.pop(); 
  7. visit(p); 
  8. if(p->pRight) 
  9. s.push(p->pRight); 
  10. if(p->pLeft) 
  11. s.push(p->pLeft); 

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

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表