검지 Offer----- 두 갈래 나무를 여러 줄로 인쇄(층층이 훑어보기)
1353 단어 검지 Offer 알고리즘 문제
제목 설명
위에서 아래로 층별로 두 갈래 트리를 인쇄하고 같은 층의 결점은 왼쪽에서 오른쪽으로 출력합니다.층마다 줄을 출력합니다.
:
이 문제는 조건이 하나 더 생겼다는 것이다
한 레이어 출력 한 행
그러면 두 개의 변수를 더 설정하면 되고,
한 줄은 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> Print(TreeNode pRoot) {
ArrayList> result = new ArrayList<>();
if (pRoot==null) {
return result;
}
Queue queue = new LinkedList<>();
ArrayList 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;
}
}