NC14 按之字形顺序打印二叉树

按之字形顺序打印二叉树

/*
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;
        stack<TreeNode*> s1;
        s1.push(pRoot);
        int seq=1;
        do{
            stack<TreeNode*> s2(s1);
            while(!s1.empty())s1.pop();
            vector<int> t;
            while(!s2.empty()){
                TreeNode* ln=s2.top();
                s2.pop();
                t.push_back(ln->val);
                if(seq%2){
                    if(ln->left)s1.push(ln->left);
                    if(ln->right)s1.push(ln->right);
                }else{
                    if(ln->right)s1.push(ln->right);
                    if(ln->left)s1.push(ln->left);
                }
            }
            seq++;
            ans.push_back(t);
        }while(!s1.empty());
        return ans;
    }
    
};
posted @ 2021-10-02 18:51  Rekord  阅读(52)  评论(0编辑  收藏  举报