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;
        }
     
  • 相关阅读:
    元学习Meta Learning/Learning to learn
    TRAINING A CLASSIFIER训练分类器(pytorch官网60分钟闪电战第四节)
    NEURAL NETWORKS神经网络(pytorch官网60分钟闪电战第三节)
    AUTOGRAD: 自动分化(pytorch官网60分钟闪电战第二节)
    WHAT IS PYTORCH?(pytorch官网60分钟闪电战第一节)
    windows找不到gpedit.msc
    The “freeze_support()“ line can be omitted if the program is not going to be frozen to produ
    torch.mul() 和 torch.mm() 的区别
    vue面试题(2)
    JS输出题练习
  • 原文地址:https://www.cnblogs.com/trouble-easy/p/12988437.html
Copyright © 2011-2022 走看看