博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
从上往下打印二叉树
阅读量:6565 次
发布时间:2019-06-24

本文共 1565 字,大约阅读时间需要 5 分钟。

题目描述

从上往下打印出二叉树的每个节点,同层节点从左至右打印。
 
思路:
路线层序遍历,方法广度优先搜索,工具队列
 
注意点:不同于C/C++,声明队列queue<TreeNode*> p;  //队列里存放的是地址 
 java的queue是接口,需要通过其实现类来完成操作

 

注意:

Queue 接口并未定义阻塞队列的方法,而这在并发编程中是很常见的。 接口定义了那些等待元素出现或等待队列中有可用空间的方法,这些方法扩展了此接口。

Queue 实现通常不允许插入 null 元素,尽管某些实现(如 )并不禁止插入 null。即使在允许 null 的实现中,也不应该将 null 插入到 Queue 中,因为 null 也用作 poll 方法的一个特殊返回值,表明队列不包含元素。

Queue 实现通常未定义 equalshashCode 方法的基于元素的版本,而是从 Object 类继承了基于身份的版本,因为对于具有相同元素但有不同排序属性的队列而言,基于元素的相等性并非总是定义良好的。

 

 

 

1 import java.util.ArrayList; 2 import java.util.Queue; 3 import java.util.LinkedList; 4 /** 5 public class TreeNode { 6     int val = 0; 7     TreeNode left = null; 8     TreeNode right = null; 9 10     public TreeNode(int val) {11         this.val = val;12 13     }14 15 }16 */17 public class Solution {18     public ArrayList
PrintFromTopToBottom(TreeNode root) {19 ArrayList
array=new ArrayList<>();20 Queue
p = new LinkedList
();21 if (root == null) {22 return array;23 }24 25 p.add(root);// 把根节点入队26 27 while (!p.isEmpty()) {28 TreeNode pop1=p.poll(); //每次只会出队一个元素,例如:当前left入队,right入队,left出队,left的俩个孩子入队,然后right出队,right孩子入队...31 array.add(pop1.val);32 33 if (pop1.left != null)34 p.add(pop1.left);35 if (pop1.right != null)36 p.add(pop1.right);37 38 }39 40 return array;41 42 }43 44 }

 

 

转载于:https://www.cnblogs.com/Octopus-22/p/9447048.html

你可能感兴趣的文章
二十一、MySQL NULL 值处理
查看>>
12、NIO--Path、、Paths、Files
查看>>
【uva 12174】Shuffle(算法效率--滑动窗口)
查看>>
input placeholder属性IE、360浏览器兼容性问题
查看>>
unix2dos/dos2unix
查看>>
svn
查看>>
Codeforces Round #446 (Div. 2) A. Greed【模拟】
查看>>
leetcode
查看>>
590. N叉树的后序遍历
查看>>
Jquery easyui 重置按钮,easyui 清空表单,Jquery easyui 重置表单
查看>>
三级联动使用Jquery和bootstrap进行布局
查看>>
对组件库对再次封装
查看>>
最近写了个自动填写调查的问卷的简单爬虫
查看>>
几个字符串方法
查看>>
PHP命令行参数
查看>>
2091操作系统引论
查看>>
应用程序已预编译,因此不允许使用目录“/App_Code/”
查看>>
软件工程第二次作业—结对编程1
查看>>
C++后台服务如何高效实现多个定时器任务
查看>>
图例解析四大UML关系【转】
查看>>