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;
        }
     
  • 相关阅读:
    约瑟夫问题
    LCIS(最长公共上升子序列)
    Spfa求负环
    裴蜀(贝祖)定理
    Tarjan算法之简单缩点
    树形dp-二次扫描+换根
    sys.path.insert
    python学习之路(十二)
    python学习之路(十一)
    python学习之路(十)
  • 原文地址:https://www.cnblogs.com/trouble-easy/p/12988437.html
Copyright © 2011-2022 走看看