把二叉树打印成多行(Java实现)
来源:互联网 发布:华道数据打我电话干嘛 编辑:程序博客网 时间:2024/05/16 00:46
本题为剑指offer面试题60
牛客网测试地址:https://www.nowcoder.com/questionTerminal/445c44d982d04483b04a54f298796288
- 热度指数:29586时间限制:1秒空间限制:32768K
- 算法知识视频讲解
从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。
Java code:
package go.jacob.day611;import java.util.ArrayList;import java.util.LinkedList;import java.util.Queue;public class Demo1 {ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) {ArrayList<ArrayList<Integer>> result=new ArrayList<ArrayList<Integer>>();if(pRoot==null)return result;//result返回结果//queue队列用来层序遍历二叉树Queue<TreeNode> queue=new LinkedList<TreeNode>();queue.add(pRoot);//记录每一行的最后一个节点TreeNode lastNodeOfThisLine=pRoot;//当前遍历的节点TreeNode temp=null;//记录队列中最后一个节点TreeNode lastNode=null;//记录每一行的节点ArrayList<Integer> line=new ArrayList<Integer>();while(!queue.isEmpty()){temp=queue.remove();if(temp.left!=null){queue.add(temp.left);lastNode=temp.left;} if(temp.right!=null){queue.add(temp.right);lastNode=temp.right;}line.add(temp.val);if(temp==lastNodeOfThisLine){result.add(line);//如果当前行的最后节点为树的最后节点,跳出循环if(lastNode==lastNodeOfThisLine)break;//获取队列的最尾元素lastNodeOfThisLine=lastNode;line=new ArrayList<Integer>();}}return result;}class TreeNode {int val = 0;TreeNode left = null;TreeNode right = null;public TreeNode(int val) {this.val = val;}}}
阅读全文
0 0
- 把二叉树打印成多行java实现
- 把二叉树打印成多行(Java实现)
- 剑指offer----把二叉树打印成多行----java实现
- 把二叉树打印成多行 java
- 剑指offer面试题60 把二叉树打印成多行(Java实现)
- 把二叉树打印成多行(java版)
- 把二叉树打印成多行
- 把二叉树打印成多行
- 把二叉树打印成多行
- 把二叉树打印成多行
- 把二叉树打印成多行
- 把二叉树打印成多行
- 把二叉树打印成多行
- 把二叉树打印成多行
- 把二叉树打印成多行
- 把二叉树打印成多行
- 把二叉树打印成多行
- 把二叉树打印成多行
- MySQL添加、删除字段
- vb课本总结
- vb总结
- 红皮书实例1总结
- 红皮书实例2总结
- 把二叉树打印成多行(Java实现)
- 红皮书实例3-4(控件)
- P1297 网线切割(二分答案)
- 红皮书实例5
- 学好英语
- Beyond Caption To Narrative: Video Captioning With Multiple Sentences
- 野指针
- 【转】计数系统架构实践一次搞定
- MyBatis简介