1 题目描述 从上到下按层打印二叉树,同一层结点从左至右输出.每一层输出一行. 2 思路和方法 vector变量存储每一层的元素vector<vector<int> > ans: 定义队列queue push front中序遍历每一层的元素,queue.size()判断每一层是否为空,queue<TreeNode*> q; q.push(pRoot); 队列queue: push() pop() size() empty() front() back() push() …
题目 从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行. 例如: 给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回其层次遍历结果: [ [3], [9,20], [15,7] ]  提示: 节点总数 <= 1000 思路 在[面试题32 - I. 从上到下打印二叉树]基础上先计算当前层元素个数,然后依次遍历当前层每个元素,并将其下层节点放入队列中. 代码 时间复杂度:O(n) 空间复杂度:O(n) class…
问题描述 从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行. 例如: 给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回其层次遍历结果: [ [3], [9,20], [15,7] ]   提示: 节点总数 <= 1000 代码 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * T…
题目: 从上往下打印出二叉树的每个节点,同层节点从左至右打印. 思路: 很明显,这是一个广度优先遍历. 需要一个队列容器来保存结点,具体操作: 1.将根结点压入队列中,并打印根结点:如果根结点有子结点,将左右子结点依次压入队列的尾部: 2.如果队列不为空,从队列头部取出结点,重复步骤1,直至队列为空. 推广: 不管是广度优先遍历一个有向图还是一棵树,都要用到队列: 第一步就把起始结点(对树而言是根节点)放入队列中:接下来每一次从队列的头部取出一个结点,遍历这个结点之后把从它能到达的结点(对树而言…
题目: 从上往下打印出二叉树的每个节点,同层节点从左至右打印. 思路: bfs,队列. 注意,队列最后不要忘了pop(). 代码: /* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { } };*/ class Solution { public: vector<int> PrintFromT…
从上往下打印二叉树 题目描述 从上往下打印出二叉树的每个节点,同层节点从左至右打印. 思路 借助两个辅助队列,一个用来存放结点,一个用来存放结点值: 先将根节点加入到队列中,然后遍历队列中的元素,遍历过程中,访问该元素的左右节点,再将左右子节点加入到队列中来. 实现代码 /* function TreeNode(x) { this.val = x; this.left = null; this.right = null; } */ function PrintFromTopToBottom(ro…
题目 请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推. 例如: 给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回其层次遍历结果: [ [3], [20,9], [15,7] ]  提示: 节点总数 <= 1000 思路 在[面试题32 - II. 从上到下打印二叉树 II]基础上偶数层逆序即可. 代码 时间复杂度:O(n) 空间复杂度:…
题目 从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印. 例如: 给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回: [3,9,20,15,7] 提示: 节点总数 <= 1000 思路 借助队列简单层次遍历. 代码 时间复杂度:O(n) 空间复杂度:O(n) class Solution { public: vector<int> levelOrder(TreeNode* root) { vector<i…
问题描述 从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印.   例如: 给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回: [3,9,20,15,7]   提示: 节点总数 <= 1000 代码 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * T…
问题描述 请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推. 例如: 给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回其层次遍历结果: [ [3], [20,9], [15,7] ]   提示: 节点总数 <= 1000 代码 /** * Definition for a binary tree node. * struct TreeNo…
剑指Offer:二叉树打印成多行[23] 题目描述 从上到下按层打印二叉树,同一层结点从左至右输出.每一层输出一行. 题目分析 Java题解 package tree; import java.util.ArrayList; import java.util.LinkedList; import java.util.Queue; public class PrintByLevel { public static void main(String[] args) { TreeNode t1 = n…
把二叉树打印成多行 牛客网 剑指Offer 题目描述 从上到下按层打印二叉树,同一层结点从左至右输出.每一层输出一行 # class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # self.right = None class Solution: # 返回二维列表[[1,2],[4,5]] def Print(self, pRoot): lt = [] self.printTree(lt,pRoot,…
[剑指Offer]把二叉树打印成多行 解题报告(Python) 标签(空格分隔): 剑指Offer 题目地址:https://www.nowcoder.com/ta/coding-interviews 题目描述: 从上到下按层打印二叉树,同一层结点从左至右输出.每一层输出一行. 解题方法 比上题的之字形遍历还容易点,直接层次遍历即可.下面的这个递归的解法要背会. 代码: # -*- coding:utf-8 -*- # class TreeNode: # def __init__(self, x…
该题目来源于牛客网<剑指offer>专题. 从上到下按层打印二叉树,同一层结点从左至右输出.每一层输出一行. 需要分层,二维数组. Go语言实现: /** * Definition for a binary tree node. * type TreeNode struct { * Val int * Left *TreeNode * Right *TreeNode * } */ func levelOrder(root *TreeNode) [][]int { var result [][]…
[题目]从上到下按层打印二叉树,同一层结点从左至右输出.每一层输出一行. 方法一:直接打印 package com.exe7.offer; import java.util.LinkedList; import java.util.Queue; /** * [题目]从上到下按层打印二叉树,同一层结点从左至右输出.每一层输出一行. * @author WGS * */ public class PrintBiTreeFromTopToBottom { static class TreeNode{…
package Tree; import java.util.ArrayList; import java.util.LinkedList; import java.util.Queue; /** * 从上到下按层打印二叉树,同一层结点从左至右输出.每一层输出一行. * 思路: * 按层次输出二叉树 * 访问根节点,并将根节点入队. * 当队列不空的时候,重复以下操作. * 1.弹出一个元素.作为当前的根节点. * 2.如果根节点有左孩子,访问左孩子,并将左孩子入队. * 3.如果根节点有右孩子…
题目描述 从上到下按层打印二叉树,同一层结点从左至右输出.每一层输出一行.#类似于二维列表[[1,2],[4,5]] 解题思路 其实这倒题和其他类似的题有所区别,这里是分层打印,把每层的节点值放在同一个列表,然后再放到一个大列表里面: 那么关键就在于怎样把每层的节点值从左到右依次取出来?有一个办法,就是把当前层的所有节点的全部子节点都存到一个列表中(这个列表每次都要更新),只要遍历这个列表,取出值就可以了 代码 class Solution: # 返回二维列表[[1,2],[4,5]] def…
题目描述 从上到下按层打印二叉树,同一层结点从左至右输出.每一层输出一行. 题目地址 https://www.nowcoder.com/practice/445c44d982d04483b04a54f298796288?tpId=13&tqId=11213&rp=3&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking 思路 比上题简单,直接层次遍历 Python # -*- coding:u…
题目描述 从上到下按层打印二叉树,同一层结点从左至右输出.每一层输出一行. 题目分析 从上到下打印二叉树我们知道用队列可以实现,但是如果多行打印怎么做呢? 我们需要分割,在行与行之间进行分割.如何分割呢?肯定要知道个数才能分割. 可是我又如何知道这一行有多少个呢? 这就是重点了,我们可以通过遍历上一层,通过它们的子树就可以知道这一层有多少个节点了. 当然我们还需要有一个变量来记录这一层已经打印了多少个节点了. 所以我们需要一个队列+两个个变量. 代码 function Print(pRoot)…
一.题目 从上到下按层打印二叉树,同一层结点从左至右输出.每一层输出一行.二.思路 队列LinkedList完成层序遍历,用end记录每层结点数目 三.代码 import java.util.ArrayList; import java.util.LinkedList; /* * 队列LinkedList完成层序遍历,用end记录每层结点数目 */ public class Solution { ArrayList<ArrayList<Integer>> Print(TreeNod…
题目: 从上到下按层打印二叉树,同一层结点从左至右输出.每一层输出一行. 思路: 很明显,采用广度优先遍历来解决,但因为需要按行输出,所以需要判断每一层的开始和结束,因此需要两个变量,一个表示当前层尚未打印的结点数,一个表示下一层结点的数目. 在线测试: http://www.nowcoder.com/books/coding-interviews/445c44d982d04483b04a54f298796288?rp=3 AC代码: /* struct TreeNode { int val;…
题目描述: 从上到下按层打印二叉树,同一层结点从左至右输出.每一层输出一行. 分析: 二叉树的层次遍历,利用队列. 代码: /* 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> >…
原创文章,转载请注明出处! 本题牛客网地址 博客文章索引地址 博客文章中代码的github地址 1.题目       从上到下按层打印二叉树,同一层结点从左至右输出,每一层输出一行.例如:下面二叉树的打印结果为: 8 6 10 5 7 9 11 2.思路 本题目使用队列和两个变量作为辅助,利用队列的先进先出策略,按层遍历二叉树.队列保存将要打印的节点,一个变量表示当前层中还没有打印的节点数,一个节点表示下一层节点的数目. 3.代码 /* struct TreeNode { int val; st…
题目描述 从上到下按层打印二叉树,同一层结点从左至右输出.每一层输出一行. [思路]使用队列实现二叉树的层次遍历. /* 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> > Pr…
  题目描述:   从上到下按层打印二叉树,同一层结点从左至右输出.每一层输出一行.   解题思路:   本题可类比第22题:从上往下打印二叉树,这两道题实际上是一回事,只不过这里我们多了一个分行打印的要求,实际上大同小异,稍加修改即可.   在二叉树层次遍历上,我们使用的是队列,借助队列先进先出的性质实现,具体规律:每次打印一个结点时,如果该结点有子结点,则将子结点放到队列的末尾,接下来取出队列的头重复前面的打印动作,直到队列中所有的结点都打印完毕.在此基础上我们考虑这里的分行要求,不难想到我…
1. 题目描述 从上到下按层打印二叉树,同一层结点从左至右输出.每一层输出一行. 2. 思路 层次遍历 3. 递归 public class Solution { ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) { ArrayList<ArrayList<Integer>> list = new ArrayList<>(); depth(pRoot, 1, list); return li…
题目描述 从上到下按层打印二叉树,同一层结点从左至右输出.每一层输出一行. 题解一:BFS public static ArrayList<ArrayList<Integer>> Print(TreeNode pRoot) { ArrayList<ArrayList<Integer>> res = new ArrayList<>(); LinkedList<TreeNode> queue = new LinkedList<>…
Q:请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推. A:BFS,偶数层reverse vector<vector<int> > Print(TreeNode *pRoot) { vector<vector<int> > result; if (pRoot == nullptr) return result; bool rever = false; TreeNod…
php实现把二叉树打印成多行(谋而后动,写好算法思路,不然浪费超多时间而且还是错误代码,而且精力消耗会导致代码正确率下降以及低级错误) 一.总结 要点:a.层次遍历(队列)  b.层次遍历中的层次(孩子在父亲的层次上面加1) 另外一种: 1.求每一层的时候:用的是计算开始时当前队列中元素的个数,用两层while 谋而后动,写好算法思路,不然浪费超多时间而且还是错误代码,而且精力消耗会导致代码正确率下降以及低级错误 二.php实现把二叉树打印成多行 题目描述: 从上到下按层打印二叉树,同一层结点从…
把二叉树打印成多行 题目描述 从上到下按层打印二叉树,同一层结点从左至右输出.每一层输出一行. 题目链接: 把二叉树打印成多行 代码 import java.util.ArrayList; import java.util.LinkedList; import java.util.Queue; /** * 标题:把二叉树打印成多行 * 题目描述 * 从上到下按层打印二叉树,同一层结点从左至右输出.每一层输出一行. * 题目链接: * https://www.nowcoder.com/practi…