zoukankan      html  css  js  c++  java
  • 剑指offer58-按之字形打印二叉树

    题目描述

    请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。
    思路:两个栈,父节点保存一个栈,从右到左输入,从左到右输出,孩子节点在另一个栈,从左到右输入,从右到左输出;
        vector<vector<int> > Print(TreeNode* pRoot) {
            
                vector<vector<int>>res;
                if(pRoot==NULL) return res;
                stack<TreeNode*>q1;
                stack<TreeNode*>q2;
                q1.push(pRoot);
                while(!q1.empty()||!q2.empty())
                {
                    vector<int>r;
                    while(!q1.empty())
                    {
                        TreeNode*p=q1.top();
                        r.push_back(p->val);
                        q1.pop();
                        if(p->left) q2.push(p->left);
                        if(p->right) q2.push(p->right);

                    }
                    res.push_back(r);
                    r.clear();
                    bool flag=false;
                    while(!q2.empty())
                    {
                        flag=true;
                        TreeNode*p=q2.top();
                        r.push_back(p->val);
                        q2.pop();
                        if(p->right) q1.push(p->right);

                        if(p->left) q1.push(p->left);
                    }
                    if(flag)
                    res.push_back(r);
                }
                return res;
        }
     
  • 相关阅读:
    推荐一个golang的json库
    TinyMind 多标签图像分类竞赛 之路
    动态环境下的slam问题如何解决?
    ubuntu16.04下安装opencv3.4.1及其扩展模块
    Ubuntu 16.04 编译OpenCV 问题解决stdlib.h: No such file or directory
    linux下升级gcc版本(gcc-7)
    基于LSD的直线提取算法
    PL-SLAM
    用U盘制作并安装WIN10 64位原版系统的详细教程(该方法应该适用于任何一版的原版操作系统)
    Win10正式版U盘安装教程
  • 原文地址:https://www.cnblogs.com/trouble-easy/p/12988437.html
Copyright © 2011-2022 走看看