题目:输入一颗二元树,从上往下按层打印树的每个结点,同一层中按照从左往右的顺序打印。
例如输入
8
/ \
6 10
/ \ / \
5 7 9 11
输出8 6 10 5 7 9 11。
解法1: 采用 STL 的map,从上到下保存节点地址即可。
解法2:采用 STL 的 FIFO 的queue, 保存节点打印即可。
解法2代码:
void show(b_tree root)
{
if (root == NULL)
return;
std::queue<b_tree> squeue;
squeue.push(root);
while (!squeue.empty())
{
b_tree tmp = squeue.front();
squeue.pop();
std::cout << tmp->value << std::endl;
if (tmp->m_left != NULL)
squeue.push(tmp->m_left);
if (tmp->m_right != NULL)
squeue.push(tmp->m_right);
}
}