<剑指Offer>面试题32(3): 之字形打印二叉树

题目描述 牛客网

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

题目解读

  • 剑指Offer 176

代码

class Solution {
public:
    vector > Print(TreeNode* pRoot) {
        int current = 0;
        int next = 1;
        stack levels[2];
        vector > pp;
        vector pp_core;

        if(pRoot == NULL){
            return pp;
        }

        levels[current].push(pRoot);
        while(!levels[current].empty() || !levels[next].empty()){
            TreeNode *temp = levels[current].top();
            levels[current].pop();
            pp_core.push_back(temp -> val);

            if(current == 0){
                if(temp -> left){
                    levels[next].push(temp -> left);
                }

                if(temp -> right){
                    levels[next].push(temp -> right);
                }
            }
            else{
                if(temp -> right){
                    levels[next].push(temp -> right);
                }

                if(temp -> left){
                    levels[next].push(temp -> left);
                }
            }

            if(levels[current].empty()){
                pp.push_back(pp_core);
                pp_core.clear();
                current = 1 - current;
                next = 1 - next;
            }
        }
        return pp;
    } 
};

总结展望

  • 思路甚好

你可能感兴趣的:(<剑指Offer>面试题32(3): 之字形打印二叉树)