输入一颗二元树,从上往下按层打印树的每个结点,同一层中按照从左往右的顺序打印。
例如输入
8
/ \
6 10
/ \ / \
5 7 9 11
例如输入
8
/ \
6 10
/ \ / \
5 7 9 11
输出 8 6 10 5 7 9 11。
分析:
与二叉树其他的三种遍历不同,层序遍历使用的不是栈,而是队列。
// copyright @ L.J.SHOU Mar.10, 2014
// level order traversal
void LevelOrder(TreeNode *root)
{
if(root == NULL) return;
queue<TreeNode*> q;
TreeNode *node(NULL);
q.push(root);
while(!q.empty())
{
node = q.front(); q.pop();
cout << node->val << " ";
if(node->left) q.push(node->left);
if(node->right) q.push(node->right);
}
cout << endl;
}