从上往下打印二叉树
来源:互联网 发布:淘宝激活码office骗局 编辑:程序博客网 时间:2024/05/13 09:01
从上往下打印出二叉树的每个节点,同层节点从左至右打印。
这其实就是二叉树的层次遍历:
(1)访问根节点
(2)在访问第i层的时候,将i+1层的节点按顺序保存在队列中;
(3)进入下一层并访问该层的所有节点;
(4)重复以上操作,知道遍历完所有节点。
这里要注意,Java中的队列:
LinkedList实现了Queue接 口。所以用LinkedList。
主要方法:
add 增加一个元索 如果队列已满,则抛出一个IIIegaISlabEepeplian异常remove 移除并返回队列头部的元素 如果队列为空,则抛出一个NoSuchElementException异常element 返回队列头部的元素 如果队列为空,则抛出一个NoSuchElementException异常offer 添加一个元素并返回true 如果队列已满,则返回falsepoll 移除并返问队列头部的元素 如果队列为空,则返回nullpeek 返回队列头部的元素 如果队列为空,则返回nullput 添加一个元素 如果队列满,则阻塞take 移除并返回队列头部的元素 如果队列为空,则阻塞
综上分析,代码如下:
import java.util.ArrayList;import java.util.LinkedList;/**public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; }}*/public class Solution { public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) { ArrayList <Integer> resultList = new ArrayList<Integer> (); if(root == null) return resultList; LinkedList <TreeNode> queue = new LinkedList<TreeNode>(); queue.add(root); while(!queue.isEmpty()){ TreeNode currentNode = queue.poll(); if(currentNode.left != null){ queue.add(currentNode.left); } if(currentNode.right != null){ queue.add(currentNode.right); } resultList.add(currentNode.val); } return resultList; }}
0 0
- 从上往下打印二叉树
- 从上往下分层打印二叉树
- Q23:从上往下打印二叉树
- 从上往下打印二叉树
- 从上往下打印二叉树
- 从上往下打印二叉树
- 从上往下打印二叉树
- 从上往下打印二叉树
- 从上往下打印二叉树
- 从上往下打印二叉树
- 从上往下打印二叉树
- 从上往下打印二叉树
- 从上往下打印二叉树
- 从上往下打印二叉树
- 从上往下打印二叉树
- 从上往下打印二叉树
- 从上往下打印二叉树
- 从上往下打印二叉树
- poj1061——青蛙的约会(扩展欧几里得)
- 从归并排序到逆序对数目计算。
- AppDelegate中几个常用的回调调用时机
- java转php 关于向上转型和多态解惑
- Git Stash用法
- 从上往下打印二叉树
- Android Studio 编译占 cpu99%、100%、编译超慢、卡断问题分析
- Linux系统基础-基本操作命令
- 之前题目简单总结
- 最长公共子序列<DP>
- git常用命令
- 51NOD 1185 威佐夫游戏 V2(大数运算 JAVA 模板)
- Javascript引用类型之Function类型
- c++模板之萃取