美文网首页
按之字形顺序打印二叉树

按之字形顺序打印二叉树

作者: su945 | 来源:发表于2020-04-25 23:08 被阅读0次

    题目描述

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

    问题分析

    利用栈的性质,后进先出实现逆序打印。
    同时区别奇偶不同的函数

    解题思路1

    class Solution {
    public:
            vector<vector<int> > Print(TreeNode* pRoot) {
                vector<vector<int>> ret;
                if(pRoot==NULL) return ret;
                stack<TreeNode*> s1;
                stack<TreeNode*> s2;
                s1.push(pRoot);
                while(!s1.empty()||!s2.empty()){
                    vector<int> v1;
                    vector<int> v2;
                    while(!s1.empty()){
                        v1.push_back(s1.top()->val);
                        if(s1.top()->left!=NULL) s2.push(s1.top()->left);
                        if(s1.top()->right!=NULL) s2.push(s1.top()->right);
                        s1.pop();
                    }
                    if(v1.size()!=0)
                    ret.push_back(v1);
                    while(!s2.empty()){
                        v2.push_back(s2.top()->val);
                        if(s2.top()->right!=NULL)   s1.push(s2.top()->right);
                        if(s2.top()->left!=NULL)  s1.push(s2.top()->left);
                        s2.pop();
                    }
                    if(v2.size()!=0)
                    ret.push_back(v2);
                }
                return ret;
            }
    };
    

    相关文章

      网友评论

          本文标题:按之字形顺序打印二叉树

          本文链接:https://www.haomeiwen.com/subject/linlwhtx.html