二叉树的广度优先搜索,使用队列对遍历节点进行存储。先进入队列的节点,优先遍历拓展其左右孩子。
void BFS(TreeNode* root) {
queue<TreeNode*> q;
q.push(root);
while (!q.empty()) {
TreeNode* node = q.front();
q.pop();
cout << node->val << endl;
if (node->left)
q.push(node->left);
if (node->right)
q.push(node->right);
}
}
void test01() {
TreeNode a(3);
TreeNode b(5);
TreeNode c(1);
TreeNode d(6);
TreeNode e(2);
TreeNode f(0);
TreeNode g(8);
TreeNode h(7);
TreeNode i(4);
a.left = &b;
a.right = &c;
b.left = &d;
b.right = &e;
c.left = &f;
c.right = &g;
e.left = &h;
e.right = &i;
BFS(&a);
}