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

按之字形顺序打印二叉树

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

/*
struct TreeNode {
    int val;
    struct TreeNode *left;
    struct TreeNode *right;
    TreeNode(int x) :
            val(x), left(NULL), right(NULL) {
    }
};
*/
#include <queue>
#include <vector>
class Solution {
public:
//和BM26大同小异。只是添加了一个判断条件,第一行不反转已遍历的队列,偶数列反转已遍历的队列即可
    void z_order(TreeNode* Node,vector<vector<int>>&ans){
        if(Node == NULL) return;
        queue<TreeNode*> q;
        q.push(Node);
        bool flag = true;
        while (!q.empty()) {
             vector<int> row;
             int n = q.size();
             flag = !flag;
             for(int i =0;i<n;i++){
                TreeNode *temp = q.front();
                q.pop();
                row.push_back(temp->val);
                if(temp->left)
                    q.push(temp->left);
                if(temp->right)
                    q.push(temp->right);
             }
             if(flag) reverse(row.begin(),row.end());//通过flag确定是否反转已遍历的队列
             ans.push_back(row);
        }
    } 
    vector<vector<int> > Print(TreeNode* pRoot) {
         vector<vector<int> >  ans;
         z_order(pRoot, ans);
         return ans;
    }
    
};

全部评论
怎么才能想楼主一样优秀
点赞 回复 分享
发布于 2023-05-31 09:18 黑龙江
这个题解很牛了,感谢分享!
点赞 回复 分享
发布于 2023-05-31 09:45 湖南

相关推荐

漂亮的海豚在炒股:把西电加粗
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务