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

按之字形顺序打印二叉树

作者: UAV | 来源:发表于2020-06-21 20:12 被阅读0次

题目描述

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

思路

层次遍历,数据隔行反转添加进结果

/*
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>>result;
        //存储层次遍历一层的数据
        vector<int>data;
        //层次遍历存储一层的结点
        vector<TreeNode*> row;
        //保存下一层的结点
        vector<TreeNode*>tmp;
        /*
        flag==true时,直接存储每一行的数据,
        flag==flag时,倒序存储每一行的数据。
        */
        bool flag = true;
        row.push_back(pRoot);
        if (pRoot==NULL) {
            return result;
        }
        while (!row.empty())
        {
            data.push_back(row[0]->val);
            if (row[0]->left != NULL) {
                tmp.push_back(row[0]->left);
            }
            if (row[0]->right != NULL) {
                tmp.push_back(row[0]->right);
            }
            //没遍历一层,删除一层的数据
            row.erase(row.begin());
            if (row.empty()) {
                row.assign(tmp.begin(),tmp.end());
                tmp.clear();
                if (flag == false) {
                    //翻转vector中的数据
                    reverse(data.begin(),data.end());
                }
                result.push_back(data);
                //标志位置反
                flag = !flag;
                data.clear();
            }
        }
        return result;
    }

};

相关文章

  • JZ-059-按之字形顺序打印二叉树

    按之字形顺序打印二叉树 题目描述 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从...

  • 打印二叉树

    按之字形顺序打印二叉树 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺...

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

    按之字形顺序打印二叉树 请实现一个函数按照之字顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的...

  • 二叉树的遍历

    从上往下打印二叉树 从上往下打印出二叉树的每个节点,同层节点从左至右打印。 按之字形顺序打印二叉树 请实现一个函数...

  • 剑指第三周

    对称的二叉树 其实就是要遍历嘛 按之字形顺序打印二叉树 同样是简单的层次遍历 把二叉树打印成多行 这个更简单了 栈...

  • 剑指offer编程题—按之字形打印二叉树

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

  • 面试题32 - III. 从上到下打印二叉树 III

    题目描述: 请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,...

  • 面试题32-3.从上到下打印二叉树3_hn

    题目描述 请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第...

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

    请实现一个函数按照之字形顺序从上向下打印二叉树。 即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第...

  • Java日记2018-06-04

    32.3 按之字形顺序打印二叉树上一题的扩展,使用辅助的队列 和栈来实现,注意一下注释里面顺序的坑 二叉搜索树的后...

网友评论

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

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