题目概述
解题思路
题目要求的是层序遍历
关于层序遍历,我们需要借助辅助的队列
从根节点开始,入队
然后每次将队头的节点Front的两个孩子Left和Right入队,并将Front出队
在出队时,进行打印即可
代码实现
#include<queue>
void LevelOrder(const TreeNode* root)
{
if (root == NULL)
return;
queue<const TreeNode*> q;
q.push(root);
while (!q.empty())
{
const TreeNode* top = q.front();
q.pop();
cout << top->_data <<" ";
if (top->_left != NULL)
q.push(top->_left);
if (top->_right != NULL)
q.push(top->_right);
}
}
void TestLevelOrder()
{
int arr[] = { 1, 2, '#', 3, '#', '#', 4, 5, '#', 6, '#', 7, '#', '#', 8 };
Tree t(arr, sizeof(arr) / sizeof(arr[0]), '#');
LevelOrder(t.GetRoot());
cout << endl;
}