阅读以下二叉树的广度优先搜索代码:
1 #include <iostream> 2 #include <queue> 3 4 using namespace std; 5 6 // 二叉树节点的定义 7 struct TreeNode { 8 int val; 9 TreeNode* left; 10 TreeNode* right; 11 TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} 12 }; 13 14 // 宽度优先搜索(BFS)迭代实现 15 TreeNode* bfs(TreeNode* root, int a) { 16 if (root == nullptr) return nullptr; 17 18 queue<TreeNode*> q; 19 q.push(root); 20 21 while (!q.empty()) { 22 TreeNode* node = q.front(); 23 q.pop(); 24 25 if (node->val == a) 26 return node; 27 28 cout << node->val << " "; // 先访问当前节点 29 30 if (node->left) q.push(node->left); // 将左子节点入队 31 if (node->right) q.push(node->right); // 将右子节点入队 32 } 33 return nullptr; 34 }
使用以上算法,在以下这棵树搜索数值20时,可能的输出是( )。