• AcWing 45. 之字形打印二叉树


    地址 https://www.acwing.com/problem/content/description/43/

    题目描述
    请实现一个函数按照之字形顺序从上向下打印二叉树。

    即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推。

    样例

    输入如下图所示二叉树[8, 12, 2, null, null, 6, 4, null, null, null, null]
        8
       / 
      12  2
         / 
        6   4
    输出:[[8], [2, 12], [6, 4]]

    算法1
    在上一题的基础上 加上了一个左右打印标志 如果标志为真 则逆向一下输入的vector

    C++ 代码

    /**
     * Definition for a binary tree node.
     * struct TreeNode {
     *     int val;
     *     TreeNode *left;
     *     TreeNode *right;
     *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
     * };
     */
    class Solution {
    public:
        vector<vector<int>> res;
        queue<TreeNode*>  que;
        int leftToright = 1;
    
        void bfs()
        {
    
            while(!que.empty()){
                vector<int> lineVec;
                while(!que.empty() && NULL != que.front() ){
                    TreeNode* p = que.front();
                    que.pop();
                    lineVec.push_back(p->val);
                    if(p->left!=NULL)
                        que.push(p->left);
                    if(p->right!=NULL)
                        que.push(p->right);
                }
                if(leftToright == 1){
                  reverse(lineVec.begin(),lineVec.end());
                }
                res.push_back(lineVec);
                leftToright = !leftToright;
    
                if(!que.empty()){
                    que.pop();
                }
                if(!que.empty()){
                    que.push(NULL);
                }
            }
        }
    
        vector<vector<int>> printFromTopToBottom(TreeNode* root) {
            if(root == NULL) return res;
            que.push(root); que.push(NULL); leftToright = !leftToright;
            bfs();
    
            return res;
        }
    };
    
    作者:defddr
    链接:https://www.acwing.com/solution/acwing/content/3662/
    来源:AcWing
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
    作 者: itdef
    欢迎转帖 请保持文本完整并注明出处
    技术博客 http://www.cnblogs.com/itdef/
    B站算法视频题解
    https://space.bilibili.com/18508846
    qq 151435887
    gitee https://gitee.com/def/
    欢迎c c++ 算法爱好者 windows驱动爱好者 服务器程序员沟通交流
    如果觉得不错,欢迎点赞,你的鼓励就是我的动力
    阿里打赏 微信打赏
  • 相关阅读:
    mfc中的_T
    zmq的send
    c++内存相关函数
    如何运行linux shell程序
    Dockfile中的命令如何在.sh中执行
    Linux 错误: $' ': command not found
    实战ZeroMQ的PUSH/PULL推拉模式
    Servlet笔记
    进程控制块(PCB)
    Makefile规则介绍
  • 原文地址:https://www.cnblogs.com/itdef/p/11331038.html
Copyright © 2020-2023  润新知