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;
        }
     
  • 相关阅读:
    python之安卓逆向HOOK系统通用类
    MySQL 排名、分组后组内排名、取各组的前几名
    MySQL case
    MySQL 行列相互转换
    MySQL学习笔记(四)
    回归分析
    构建决策树
    用K-Means聚类分析做客户分群
    会员数据化运营
    数据降维——主成分分析、因子分析、线性判别分析
  • 原文地址:https://www.cnblogs.com/trouble-easy/p/12988437.html
Copyright © 2011-2022 走看看