题目地址:从上往下打印二叉树_牛客题霸_牛客网
题目回顾:
不分行从上往下打印出二叉树的每个节点,同层节点从左至右打印。例如输入{8,6,10,#,#,2,1},如以下图中的示例二叉树,则依次打印8,6,10,2,1(空节点不打印,跳过),请你将打印的结果存放到一个数组里面,返回。
解题思路:
使用队列
首先,队列是尾部插入,头部删除的一种数据结构。在遍历树的过程中使用层序遍历的话,是从根开始由左向右进行遍历的,那么我们在遍历树的时候将当前根的结点存入到队列中去,遍历到结点时将其从队列中删除,这样一来,队列poll方法获取的队列的头就是按从上到下顺序的。也就是我们要的结果。文章来源:https://www.toymoban.com/news/detail-643419.html
文章来源地址https://www.toymoban.com/news/detail-643419.html
整体代码:
public static ArrayList<Integer> PrintFromTopToBottom(TreeNode root) {
ArrayList<Integer> res = new ArrayList<>();
if (root == null)
return res;
Queue<TreeNode> q = new LinkedList<>();
q.offer(root);
while (!q.isEmpty()){
TreeNode cur = q.poll();
res.add(cur.val);
if (cur.left!=null){
q.add(cur.left);
}
if (cur.right != null)
q.add(cur.right);
}
return res;
}
到了这里,关于JZ32 从上往下打印二叉树(Java)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!