首页 / 算法 / [编程题] 把二叉树打印成多行
[编程题] 把二叉树打印成多行
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了[编程题] 把二叉树打印成多行,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1444字,纯文字阅读大概需要3分钟。
内容图文
![[编程题] 把二叉树打印成多行](/upload/InfoBanner/zyjiaocheng/1076/32a0e09d8d3e43dc90a813957f8a03bd.jpg)
把二叉树打印成多行
题目描述
从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。
![技术分享图片](/upload/getfiles/default/2022/10/28/20221028021546082.jpg)
思考分析(类似二叉树的程序遍历)
参考:二叉树层序遍历
要把二叉树按照每行打印出来,我们可以借助一个队列来处理,一开始把root节点放入到对列中,每次处理,把队列中的元素取出,放入到一个行中(list),然后把队列中的所有信息都换为其下一行的孩子信息,继续如上处理.直至某一次队列返回空,就跳出while循环,返回结果。
Java代码
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public List<List<Integer>> levelOrder(TreeNode pRoot) {
Queue<TreeNode> queue = new LinkedList(); //处理队列
ArrayList res = new ArrayList(); //结果集合
if(pRoot==null) return new ArrayList();
//把root放入队列
if(pRoot!=null){
queue.offer(pRoot);
}
//队不为空时处理
while(!queue.isEmpty()){
//把队列中的每个元素放入这行的list
ArrayList line = new ArrayList();
//调用change函数,把对中元素换为其下一行的其孩子们
Queue<TreeNode> temp = change(queue,line,res);
queue = temp;//把temp队列赋值给queue队列
}
//如果queue为空了,就结束了
return res;
}
//取出传入的queue的所有元素,放入了行集合,也把queu中元素的子节点放入了temp队列中返回
public Queue<TreeNode> change(Queue<TreeNode> queue,ArrayList line,ArrayList res){
Queue<TreeNode> temp = new LinkedList(); //临时存储
while(!queue.isEmpty()){
TreeNode node = queue.poll();
line.add(node.val);//放入本行的集合中
//把其子放入到temp队列中
if(node.left!=null){
temp.offer(node.left);
}
if(node.right!=null){
temp.offer(node.right);
}
}
res.add(line);//把本行的结果放入总结果集合
//取完了queue的所有元素,放入了行中,也把queu中元素的子放入了temp队列中了,返回
return temp;
}
}
测试输出:
原文:https://www.cnblogs.com/jiyongjia/p/13192784.html
内容总结
以上是互联网集市为您收集整理的[编程题] 把二叉树打印成多行全部内容,希望文章能够帮你解决[编程题] 把二叉树打印成多行所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。