BFS-Queueベース
10648 ワード
class TreeNode{
int val;
TreeNode left,right;
TreeNode(int val){
this.val=val;
}
}
public class LevelOrderOfBinaryTree {
public static void main(String[] args) {
TreeNode root = new TreeNode(1);
root.left = new TreeNode(2);
root.right = new TreeNode(3);
root.left.left = new TreeNode(4);
root.left.right = new TreeNode(5);
System.out.println(solution(root));
}
private static List<List<Integer>> solution(TreeNode tree) {
List<List<Integer>> result = new ArrayList<>();
if(tree==null) return result;
Queue<TreeNode> queue = new LinkedList<>();
queue.offer(tree);
while(!queue.isEmpty()){
List<Integer> list = new LinkedList<>();
int size = queue.size();
for(int i=0;i< size;i++){ // queue.size 를 받아놓고 할 때랑, queue.size()로 돌릴 때랑 결과가 다르다 poll 을 하는 순간 queue 의 size 가 변하기 때문에.
TreeNode pollNode = queue.poll();
list.add(pollNode.val);
if(pollNode.left!=null){
queue.offer(pollNode.left);
}
if(pollNode.right!=null){
queue.offer(pollNode.right);
}
}
result.add(list);
}
return result;
}
}
Reference
この問題について(BFS-Queueベース), 我々は、より多くの情報をここで見つけました https://velog.io/@camel-man-ims/BFS-Queue-기본テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol