【刷题之路】二叉树按层打印

原创 2016年05月30日 21:05:01

按层打印,换层换行

class TreePrinter {
public:
    vector<vector<int> > printTree(TreeNode* root) {
        // write code here
        TreeNode* last;
        TreeNode* nlast;
        vector<int> temp; //用于保存每一层的值
        queue<TreeNode*> tmp; //用于保存遍历的树节点
        vector<vector<int> > res;
        last=root;
        nlast=root;
        tmp.push(root);
        while(!tmp.empty()){
            last=tmp.front(); //last为队列的头,即为遍历的节点
            tmp.pop();
            temp.push_back(last->val);
            if(last->left) tmp.push(last->left); //将当前遍历的节点的左右子节点放入队列中
            if(last->right) tmp.push(last->right);   
            if(last==nlast){
                nlast=tmp.back(); //当last==nlast,下一层的所有节点必然已经全部放入队列中,于是让nlast=tmp的末尾,即为下一行的最后一个节点
                res.push_back(temp);
                temp.clear();
            }     
        }
        return res;
    }
};


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

LintCode刷题之路---二叉树的路径

给定一个二叉树,找出所有路径中各节点相加总和等于给定 目标值 的路径。 一个有效的路径,指的是从根节点到叶节点的路径。 例: 给定一个二叉树,和 目标值 = 5: 1 / \ ...

我的软考之路(四)——数据结构与算法(2)之树与二叉树

上篇博文主要介绍的是数据结构的线性结构,我们这篇博文介绍非线性结构—树与二叉树,我先介绍树的一些基本概念,树的遍历,再介绍二叉树相关概念和特性,以及二叉树的遍历,最后再树与二叉树的对比,总结。    ...

Swift 算法实战之路:二叉树

原文出处: 故胤道长(@故胤道长)      之前我们探索了数组、字典、字符串、链表、栈、队列的处理和应用。今天我们来讲讲平常相对很少用到,面试中却是老面孔的数据结构:二叉树。本期...

剑指offer刷题之java实现的从上往下打印二叉树

package mine; import java.util.ArrayList; import java.util.LinkedList; import java.util.Queue; /** ...

牛客网刷题之把二叉树打印成多行

题目描述:解题思路:这题和前面之字形打印那题类似,不同的是,判断到达每一层重点时只需要换行即可。同样可以用start和end两个代表每一行的起始与终止。其他就是树的遍历问题了。题解:ArrayList...

牛客网刷题之二叉树的镜像

题目描述:解题思路:  所谓镜像,就是照镜子得出来的图像。那么我们可以循环遍历二叉树的节点,如果不为空就交换左右子树节点。同样,就有递归和非递归解法了。递归法: public void Mirror(...

JAVA二叉树横向打印

【刷题之路】二叉树上最远距离

从二叉树的节点A出发,可以向上或者向下走,但沿途的节点只能经过一次,当到达节点B时,路径上的节点数叫作A到B的距离。对于给定的一棵二叉树,求整棵树上节点间的最大距离。 最大距离不外乎两种情况 1、左子...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)