zoukankan      html  css  js  c++  java
  • 剑指offer_面试题_从上往下打印二叉树

    题目:从上往下打印出二叉树的每一个结点。同一层的结点依照从左到右的顺序打印。比如输入图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;
    }

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

  • 相关阅读:
    BZOJ 2212/BZOJ 3702
    BZOJ 4761 Cow Navigation
    BZOJ 3209 花神的数论题
    BZOJ 4760 Hoof, Paper, Scissors
    BZOJ 3620 似乎在梦中见过的样子
    BZOJ 3940 Censoring
    BZOJ 3942 Censoring
    BZOJ 3571 画框
    BZOJ 1937 最小生成树
    BZOJ 1058 报表统计
  • 原文地址:https://www.cnblogs.com/slgkaifa/p/7020228.html
Copyright © 2011-2022 走看看