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

按之字形顺序打印二叉树

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;
    }

};
全部评论

相关推荐

就在我现在公司的隔壁每天经过都唏嘘不已(就是羡慕)什么时候可以到这里上班啊
柯基在debug:从大学毕业投简历到现在了,应届的时候我都面到终面了,现在工作四年了连简历初筛都过不了了
投递莉莉丝游戏等公司8个岗位
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
昨天 11:47
点赞 评论 收藏
分享
牛客84809583...:举报了
点赞 评论 收藏
分享
程序员小白条:你是沟通了900个,不是投了900份简历,你能投900份,意味着对面都要回复你900次,你早就找到实习了,没亮点就是这样的,别局限地区,时间投的也要早,现在都要7月了
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
06-25 20:45
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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