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

2020-01-06 13:15:30于海丽

易采站长站为您分析C++非递归队列实现二叉树的广度优先遍历,实例分析了遍历二叉树相关算法技巧,并附带了两个相关算法实例,需要的朋友可以参考下

本文实例讲述了C++非递归队列实现二叉树的广度优先遍历。。具体如下:

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

 

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

附带两个相关示例:

1. 递归先序遍历二叉树

 

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