剑指offer系列20--从上到下打印二叉树
* 20 [题目]从上往下打印出二叉树的每个节点,同层节点从左至右打印。
* 【思路】从根结点开始,先保存结点,再看根结点的左右结点有没有值。
* 有,就将左右值放到集合中;
* 根节点输出后,打印根结点左结点并将根结点左结点的左右结点保存;打印根结点右结点并将根结点右结点的左右结点保存。。
- package com.exe4.offer;
- import java.util.ArrayList;
- /**
- * 20 [题目]从上往下打印出二叉树的每个节点,同层节点从左至右打印。
- * 【思路】从根结点开始,先保存结点,再看根结点的左右结点有没有值。
- * 有,就将左右值放到集合中;
- * 根节点输出后,打印根结点左结点并将根结点左结点的左右结点保存;打印根结点右结点并将根结点右结点的左右结点保存。。
- *
- * @author WGS
- *
- */
- public class PrintBitTree {
- public static class TreeNode{
- int val=0;
- TreeNode left=null;
- TreeNode right=null;
- public TreeNode(int n){
- this.val=n;
- }
- }
- public void printBitTreeFromTopToBottom(TreeNode rootNode){
- if(rootNode==null) return;
- ArrayList<TreeNode> list=new ArrayList<>();//保存遍历的节点
- ArrayList<Integer> data=new ArrayList<>();//保存最后输出的遍历节点
- int index=1;
- list.add(rootNode);
- while(list.size()>0){
- //移除后,下一位即0位。比如8在0位,移除后6即在0位。
- //此时6由1位》0位,10由2位变为1位。
- //所以下次存储时要在2位存储,不是在3位,所以此处index--
- TreeNode temp=list.remove(0);//8
- index--;
- //data.add(temp.val);//8 6 10...
- System.out.print(temp.val+" ");
- if(temp.left!=null){
- list.add(index++, temp.left);//1位6
- }
- if(temp.right!=null){
- list.add(index++, temp.right);//2位10
- }
- }
- }
- public static void main(String[] args) {
- TreeNode root = new TreeNode(8);
- TreeNode node1 = new TreeNode(6);
- TreeNode node2 = new TreeNode(10);
- TreeNode node3 = new TreeNode(5);
- TreeNode node4 = new TreeNode(7);
- TreeNode node5 = new TreeNode(9);
- TreeNode node6 = new TreeNode(11);
- root.left = node1;
- root.right = node2;
- node1.left = node3;
- node1.right = node4;
- node2.left = node5;
- node2.right = node6;
- new PrintBitTree().printBitTreeFromTopToBottom(root);
- System.out.println();
- /* for (Integer integer : list) {
- System.out.print(integer + " ");*/
- }
- }
剑指offer系列20--从上到下打印二叉树的更多相关文章
- 剑指 Offer 32 - II. 从上到下打印二叉树 II
剑指 Offer 32 - II. 从上到下打印二叉树 II 从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行. 例如: 给定二叉树: [3,9,20,null,null,1 ...
- 剑指 Offer 32 - III. 从上到下打印二叉树 III
剑指 Offer 32 - III. 从上到下打印二叉树 III 请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印, ...
- 剑指 Offer 32 - I. 从上到下打印二叉树
剑指 Offer 32 - I. 从上到下打印二叉树 从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印. 例如: 给定二叉树: [3,9,20,null,null,15,7], 3 ...
- 剑指 Offer 32 - III. 从上到下打印二叉树 III + 双端队列使用 + 蛇形打印层次遍历序列 + 正倒序输出
剑指 Offer 32 - III. 从上到下打印二叉树 III Offer_32_3 题目详情 题解分析 本题我想的比较复杂,其实题目的要求只是需要遍历的结果逆序和正序交替,这个其实可以使用Coll ...
- 剑指 Offer 32 - II. 从上到下打印二叉树 II + 层次遍历二叉树 + 按层存储
剑指 Offer 32 - II. 从上到下打印二叉树 II Offer_32 题目描述: 题解分析: 这道题我一开始想到的解决方法较粗暴,就是使用两个变量来记录当前层的节点数和下一层的结点数. 以上 ...
- 剑指 Offer 32 - I. 从上到下打印二叉树 + 层次遍历二叉树
剑指 Offer 32 - I. 从上到下打印二叉树 Offer_32_1 题目描述 解题思路 这题属于简单题,考察的是我们对二叉树以及层次遍历的方法. 这里只需要使用简单的队列即可完成二叉树的层次遍 ...
- 每日一题 - 剑指 Offer 32 - I. 从上到下打印二叉树
题目信息 时间: 2019-06-25 题目链接:Leetcode tag:BFS(广度优先搜索) 队列 难易程度:中等 题目描述: 从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印 ...
- 剑指offer 23:从上往下打印二叉树
题目描述 从上往下打印出二叉树的每个节点,同层节点从左至右打印. 解题思路 按照从左往右从上到下的顺序打印节点,需要我们维护一个队列,这个队列放入元素的顺序是访问队头节点(起始先放入根节点),则若当前 ...
- 每日一题 - 剑指 Offer 32 - II. 从上到下打印二叉树 II
题目信息 时间: 2019-06-25 题目链接:Leetcode tag: 队列 BFS 难易程度:简单 题目描述: 从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行. 示 ...
- 剑指offer——33分行从上到下打印二叉树
题目描述 从上到下按层打印二叉树,同一层结点从左至右输出.每一层输出一行. 题解: 使用BFS,按层打印即可 class Solution { public: vector<vector&l ...
随机推荐
- Evaluate Reverse Polish Notation
Evaluate the value of an arithmetic expression in Reverse Polish Notation. Valid operators are +, -, ...
- 如何选择分类器?LR、SVM、Ensemble、Deep learning
转自:https://www.quora.com/What-are-the-advantages-of-different-classification-algorithms There are a ...
- 104. Maximum Depth of Binary Tree
Given a binary tree, find its maximum depth. The maximum depth is the number of nodes along the long ...
- keil uvision看厌了么?试试Sublime Text吧!
之前用 Sublime Text(以下简称 ST )配置了 C/C++ 开发环境,感觉相当不错,作为编辑器的 ST,编辑代码的功能当然是相当棒的,美中不足的是目前只能编译单个文件,但是用来做些小练习也 ...
- 单页web应用(SPA)的简单介绍
单页 Web 应用 (single-page application 简称为 SPA) 是一种特殊的 Web 应用.它将所有的活动局限于一个Web页面中,仅在该Web页面初始化时加载相应的HTML.J ...
- eBay_Relist(退换刊登费)
如果物品首次刊登结束时没有人中标,或是买家并没有付款完成交易,那么卖家以通过重新刊登的方法来再次销售.如果该物品在第二次刊登时成功售出,且满足eBay的重新刊登退费条件,那么eBay便会退还重新刊登的 ...
- JS初学之-点击元素,当前的显示样式,其他变灰色
点击按钮或者其他元素,当前的变化,其他的不变(比如选项卡按钮,点击当前的变为黄色,其他的不变色),这样的情况我们有两种思路: 1.全部清空,当前添加 for(var i=0;i<aBtn.len ...
- makefile--目标搜索(八)
原创博文,转载请标明出处--周学伟http://www.cnblogs.com/zxouxuewei/ 在一个较大的工程中,一般会将源代码和二进制文件(.o 文件和可执行文件)安排在不同的目录来进行区 ...
- hihoCoder #1301 : 筑地市场 (打表+构造)
题目大意:问含有4或者7的第k大的正数是多少. 题目分析:1~10.1~100.1~1000...之间的含有4或者7的个数可以求出,这样就可以从高位到地位依次确定这个数的每一位上的值. 代码如下: # ...
- Python学习(2)——编码
今天写了个程序但是在DOS窗口和IDEL窗口调试的结果不一样,有些郁闷~ #!/usr/bin/env python #coding=utf-8 #python version:2.7.3 #syst ...