按之字形顺序打印二叉树

2020-07-24  本文已影响0人  Crazy_Bear
/*
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>> res;
        vector<int> tmp;
        if(!pRoot) return res;
        stack<TreeNode *> q;
        stack<TreeNode *> s;
        q.push(pRoot);
        while(!q.empty()||!s.empty()){
        while(!q.empty()){
            tmp.push_back(q.top()->val);
            TreeNode * left = q.top()->left;
            TreeNode * right = q.top()->right;
            if(left)
            s.push(left);
            if(right)
            s.push(right);
            q.pop();
        }
            res.push_back(tmp);
            tmp.clear();
         while(!s.empty()){
            tmp.push_back(s.top()->val);
            TreeNode * left = s.top()->left;
            TreeNode * right = s.top()->right;
            if(right)
            q.push(right);
            if(left)
            q.push(left);
            s.pop();
        }
            if(!tmp.empty())
            res.push_back(tmp);
            tmp.clear();
        }
        return res;
    }  
};
上一篇 下一篇

猜你喜欢

热点阅读