您的位置:首页 > 其它

按之字形顺序打印二叉树

2016-08-13 09:20 246 查看


题目描述

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

/*

struct TreeNode {

    int val;

    struct TreeNode *left;

    struct TreeNode *right;

    TreeNode(int x) :

            val(x), left(NULL), right(NULL) {

    }

};

*/

class Solution {

public:

    vector<vector<int> > Print(TreeNode* pRoot) 

    {

         vector<vector<int> > vec;

         if(pRoot==NULL) return vec;

        stack<TreeNode *> stack1,stack2;

        stack1.push(pRoot);

        while(!stack1.empty()||!stack2.empty())

            {

              vector<int> data;

               TreeNode* pNode=NULL;

               if(!stack1.empty())

                 {

                 while(!stack1.empty())

                     {

                     pNode=stack1.top(); 

                     data.push_back(pNode->val);

                     stack1.pop(); 

                     if(pNode->left!=NULL)

                     stack2.push(pNode->left);

                     if(pNode->right!=NULL)

                     stack2.push(pNode->right);               

                     }

                

                 }

             else if(!stack2.empty())

                {

                 while(!stack2.empty())

                    {

                     

                     pNode=stack2.top(); 

                     data.push_back(pNode->val);

                     stack2.pop();     

                     

                     if(pNode->right!=NULL)

                     stack1.push(pNode->right);

                     if(pNode->left!=NULL)

                     stack1.push(pNode->left);                      

                    }

                     

               

                 

               }

            

               vec.push_back(data);

            }

        return vec;

           

    }

    

};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: