首页 > 其他 > 详细

之字形打印二叉树

时间:2016-09-13 22:21:53      阅读:213      评论: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
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!