1.二叉树的层序遍历
输入:二叉树根节点 输出:二维数组。其中的每一个一维数组为二叉树的每一层结点的值。 思路:使用广度优先的方法。从根节点开始,将二叉树的每层结点放入一个queue队列中,当队列不为空时,不断poll出队列中的结点。并将弹出的结点的值记录到临时的list中,当遍历完之前的queue时,就将list这个一维数组添加到最终的结果中。 不断重复上述步骤,直到queue为空,则说明已经将二叉树的最底层结点处理了。此时结束,将结果返回。
import java.util.*;
public class Solution {
public ArrayList<ArrayList<Integer>> levelOrder (TreeNode root) {
ArrayList<ArrayList<Integer>> res = new ArrayList<>();
if (root == null) return res;
Queue<TreeNode> queue = new LinkedList<TreeNode>();
queue.add(root);
while (!queue.isEmpty()) {
int size = queue.size();
ArrayList<Integer> list = new ArrayList<>();
for (int i = 0;i < size;i++) {
TreeNode tmpNode = queue.poll();
list.add(tmpNode.val);
if (tmpNode.left != null) {
queue.add(tmpNode.left);
}
if (tmpNode.right != null) {
queue.add(tmpNode.right);
}
}
res.add(list);
}
return res;
}
}
|