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

按之字形顺序打印二叉树

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) {
        vector<vector<int> > ans;
        if (!pRoot) return ans;   // 空指针,直接返回
        queue<TreeNode*> que;
        que.push(pRoot);
        int c = 0;     // 记录奇偶层
        while(!que.empty()) {  // 队列不为空
            int n = que.size();
            vector<int> tmp;
            while (n--) {   // 当前层遍历
                tmp.push_back(que.front()->val);
                if (que.front()->left) que.push(que.front()->left);
                if (que.front()->right) que.push(que.front()->right);
                que.pop();
            }
            c++;
            if (c%2 == 0) {
                reverse(tmp.begin(), tmp.end());  // 偶数层,则反转
            }
            ans.emplace_back(tmp);
        }
        return ans;
    }

};
全部评论

相关推荐

05-19 19:57
蚌埠学院 Python
2237:Gpa70不算高,建议只写排名,个人技能不在多而在精,缩到8条以内。项目留一个含金量高的,减少间距弄到一页,硕士简历也就一页,本科不要写很多
点赞 评论 收藏
分享
05-29 22:11
门头沟学院 Java
Elastic90:抛开学历造假不谈,这公司的招聘需求也挺怪的,Java开发还要求你有图文识别、移动端开发和c++的经验,有点逆天了。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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