首页 > 代码库 > 之字形打印二叉树

之字形打印二叉树

问题最关键的是用了栈和队列两个数据结构。在层次遍历的过程中,同时将节点保存到栈中。

vector<vector<int>> zigzagLevelOrder(TreeNode* root) {    vector<vector<int>> result;    if(root==NULL)   return result;    vector<int> tempRes;    stack<TreeNode *>st;    queue<TreeNode *>que;    que.push(root);    TreeNode *last=root,*temp=root;    tempRes.push_back(root->val);    result.push_back(tempRes);    tempRes.clear();    while(!que.empty()){        temp=que.front();        if(temp->left){            que.push(temp->left);            st.push(temp->left);        }        if(temp->right){            que.push(temp->right);            st.push(temp->right);        }        if(temp==last){            while(!st.empty()){                TreeNode *t=st.top();                tempRes.push_back(t->val);                st.pop();            }            if(tempRes.size()>0)                result.push_back(tempRes);            last=que.back();            tempRes.clear();        }        que.pop();    }    return result;}

 

之字形打印二叉树