【树】之字形打印二叉树

题目描述
请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。

利用STL容器,之字形考虑先进后出,用栈

vector<vector<int> > Print(TreeNode* pRoot) {
    stack<TreeNode*> q1, q2;
    vector<vector<int>> res;
    if(!pRoot) return res;
    q1.push(pRoot);
    while(!q1.empty() || !q2.empty()){
        if(!q1.empty()){
            vector<int> tempVec;
            while(!q1.empty()){
                TreeNode* tempTree = q1.top();
                q1.pop();
                tempVec.push_back(tempTree->val);
                
                if(tempTree->left) q2.push(tempTree->left);
                if(tempTree->right) q2.push(tempTree->right);
            }
            res.push_back(tempVec);
        }
        else{
            vector<int> tempVec;
            while(!q2.empty()){
                TreeNode* tempTree = q2.top();
                q2.pop();
                tempVec.push_back(tempTree->val);
                
                if(tempTree->right) q1.push(tempTree->right);
                if(tempTree->left) q1.push(tempTree->left);
            }
            res.push_back(tempVec);
        }
    }
    return res;
}

猜你喜欢

转载自blog.csdn.net/qq_34606546/article/details/86709340
今日推荐