您的位置:首页 > 职场人生

微软,Google面试题 (12) —— 从上往下遍历二叉树

2010-08-23 22:54 246 查看
题目:输入一颗二元树,从上往下按层打印树的每个结点,同一层中按照从左往右的顺序打印。
例如输入

8
/ /
6 10
// //
5 7 9 11

输出8 6 10 5 7 9 11。
解法:树是图的一种特殊的退化形式。本题就是一个广度优先遍历图的问题。首先把root放进一个队列。开始循环,当队列不为空的时候。pop并且打印队首元素。然后把对手元素的孩子节点从左到右依次push进队列。继续循环。
void BSF(Node* root)
{
queue.push_back(root);
while (!queue.empty())
{
Node *temp = queue.front();
queue.pop();
if (!temp->left)
{
queue.push_back(temp->left);
}
if (!temp->right)
{
queue.push_back(temp->right);
}
print(temp);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐