검지 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;
	}

}

좋은 웹페이지 즐겨찾기