面美团被这道题卡住了,总想着递归再回逆,回头看了下,Ellis的数据结构里就有这个,还是看书不仔细,被刷也是应该应该的。
思路的关键就是用队列来保存节点的左右孩子,然后出列,打印。
void level_traversal(Node * root)
{
queue<Node *> q;
q.push(root);
// cout << q.size() << endl;
while(q.size())
{
cout << q.front()->data << endl;
if (q.front()->left)
q.push(q.front()->left);
if (q.front()->right)
q.push(q.front()->right);
q.pop();
}
}