C++ 二叉树层次遍历 宽度优先搜索

二叉树层次遍历,又称为宽度优先搜索,按树的层次依次访问树的节点。层次遍历使用队列对遍历节点进行存储,先进入队列的节点,优先遍历拓展其左孩子与右孩子。

#include<stdio.h>
#include<vector>
#include<queue>
struct TreeNode
{
 int val;
 TreeNode* left;
 TreeNode* right;
 TreeNode(int x): val(x), left(NULL), right(NULL){}
};
void BFS(TreeNode* root)
{
 std::queue<TreeNode*> Q;
 Q.push(root);
 while (!Q.empty())
 {
  TreeNode* node = Q.front();
  printf("[%d]", node->val);
  Q.pop();
  if (node->left)
  {
   Q.push(node->left);
  }
  if (node->right)
  {
   Q.push(node->right);
  }
 }
}
int main()
{
 TreeNode a(1);
 TreeNode b(2);
 TreeNode c(5);
 TreeNode d(3);
 TreeNode e(4);
 TreeNode f(6);
 a.left = &b;
 a.right = &c;
 b.left = &d;
 b.right = &e;
 c.right = &f;
 BFS(&a);
 return 0;
}

运行结果为:
[1][2][5][3][4][6]

发布了61 篇原创文章 · 获赞 46 · 访问量 1578

猜你喜欢

转载自blog.csdn.net/weixin_44208324/article/details/104898367