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

剑指offer_面试题_从上往下打印二叉树

2017-06-15 21:40 344 查看

题目:从上往下打印出二叉树的每一个结点。同一层的结点依照从左到右的顺序打印。比如输入图4.5中的二叉树。则依次打印出8、6、10、5、7、9、11。

             8

          /     \

        6     10

      /   \     /   \

    5    7 9   11

思路:树的层序遍历。应用 队列 这一数据容器。如上图的输出顺序,每当父结点出队(输出),孩子结点才会入队。

算法例如以下:

/**层序遍历*/
void PrintFromToBottom(TreeNode *pRoot)
{
if(NULL == pRoot)
return;

queue<TreeNode *> temp;        /**定义一个存放二叉树结点的队列*/
temp.push(pRoot);              /**头结点入栈*/

while(!temp.empty())
{
TreeNode *p = temp.front();  /**获取队列头部数据*/
cout << p->m_pValue << ' ';

temp.pop();                  /**头部数据出栈,让它的左右孩子结点入栈*/

if(p->lchild)
temp.push(p->lchild);
if(p->rchild)
temp.push(p->rchild);
}
cout << endl;
}

/* 点滴积累,我的一小步 */

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: