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;
    }

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

  • 相关阅读:
    TCP全局同步
    pytest框架之fixture详细使用
    库操作和表操作
    封装之如何隐藏对象及封装的意义
    类的抽象
    组合
    在子类中重用父类的方法和属性
    类的继承和实现原理
    类的使用,对象的使用
    互联网协议的五层协议详解
  • 原文地址:https://www.cnblogs.com/slgkaifa/p/7020228.html
Copyright © 2011-2022 走看看