题目: 从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。
例子:
代码:
import java.util.*;
class Solution {
public int[] levelOrder(TreeNode root) {
ArrayDeque<TreeNode> queue = new ArrayDeque<>();
TreeNode temp = root;
queue.addLast(temp);
ArrayList<Integer> treeNodes = new ArrayList<>();
while (!queue.isEmpty()){
temp = queue.pollFirst();
treeNodes.add(temp.getVal());
if (temp.getLeft()!=null){
queue.addLast(temp.getLeft());
}
if (temp.getRight()!=null){
queue.add(temp.getRight());
}
}
Integer[] result = new Integer[treeNodes.size()];
treeNodes.toArray(result);
int[] ints = Arrays.stream(result).mapToInt(Integer::valueOf).toArray();
return ints;
}
}
代码解析: 其实就是一个树得层次遍历,也是图的广度优先搜索。用一个队列实现就好了。
|