之字形打印二叉树

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了之字形打印二叉树相关的知识,希望对你有一定的参考价值。

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

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

 

以上是关于之字形打印二叉树的主要内容,如果未能解决你的问题,请参考以下文章

按之字形顺序打印二叉树

剑指Offer——按之字形顺序打印二叉树

剑指offer-按之字形打印二叉树

剑指offer(五十三)之按之字形顺序打印二叉树

剑指offer JZ77 按之字形顺序打印二叉树

剑指offer 59.树 按之字形顺序打印二叉树