题解 | #按之字形顺序打印二叉树#

按之字形顺序打印二叉树

http://www.nowcoder.com/practice/91b69814117f4e8097390d107d2efbe0


/*
struct TreeNode {
    int val;
    struct TreeNode *left;
    struct TreeNode *right;
    TreeNode(int x) :
            val(x), left(NULL), right(NULL) {
    }
};
*/
class Solution {
public:
    vector<vector<int> > Print(TreeNode* pRoot) {
        //用于层序遍历
        queue<TreeNode*> q;
        //判断是否需要逆序输出
        bool stack_flag = false;
        vector<vector<int> > ans;
        if(pRoot==nullptr) return ans;
        q.push(pRoot);
        while(!q.empty()){
            //n为当前层的元素个数,下面的for循环用于区别不同层的的元素
            int n = q.size();
            vector<int> subvec;
            subvec.reserve(n);
            for(int i=0; i< n; i++){
                TreeNode* temp = q.front();
                subvec.push_back(temp->val);
                if(temp->left) q.push(temp->left);
                if(temp->right) q.push(temp->right);
                q.pop();
            }
            //如果是偶数层,则逆序储存,达到之字形输出的目的
            if(stack_flag) reverse(subvec.begin(), subvec.end());
            ans.push_back(subvec);
            stack_flag = !stack_flag;
        }
        
        return ans;
        
    }
    
};


全部评论

相关推荐

在瑞幸干两年,奥特曼都得闪灯
不知名的牛友:奥特曼每天只上3分钟班
点赞 评论 收藏
分享
点赞 评论 收藏
分享
点赞 评论 收藏
分享
面试了几家,全程问项目,八股一点都不问,可惜准备了这么久
独角仙梦境:现在感觉问八股像是中场休息一样的,问几个八股放松一下再上强度
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务