您的位置:首页 > Web前端

剑指Offer------把二叉树打印成多行(层序遍历)

2017-10-13 21:26 441 查看

题目描述

从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。

<分析>
本题就是多了个条件
一层输出一行
那么就多设置两个变量即可,
一个此行开始start,另一个此行结束end
当遍历到end时,就将这行数据存入list中即可
package com.ex.string;

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Queue;

class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;

public TreeNode(int val) {
this.val = val;
}
}

/**
*
* @author 周颖
* @date 2017年10月13日 下午9:12:42
* @Decription 从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。
*/
public class Ex7 {
ArrayList<ArrayList<Integer>> Print(TreeNode pRoot) {
ArrayList<ArrayList<Integer>> result = new ArrayList<>();
if (pRoot==null) {
return result;
}
Queue<TreeNode> queue = new LinkedList<>();
ArrayList<Integer> list = new ArrayList<>();
//根结点入队
queue.offer(pRoot);
//第一行只有一个结点,故终点为1
int start=0,end=1;
while(!queue.isEmpty()){
TreeNode node = queue.poll();
list.add(node.val);
start++;
if (node.left!=null) {
queue.offer(node.left);
}
if (node.right!=null) {
queue.offer(node.right);
}
if (start==end) {
end=queue.size();
start=0;
result.add(list);
list=new ArrayList<>();
}
}
return result;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: