码迷,mamicode.com
首页 > 其他好文 > 详细

之字形打印二叉树

时间:2016-09-13 22:22:13      阅读:163      评论:0      收藏:0      [点我收藏+]

标签:

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

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

 

之字形打印二叉树

标签:

原文地址:http://www.cnblogs.com/healthylife/p/5869802.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!