标签:nod link int res 一个 ++ ima 结果 分层
什么是层序遍历层序遍历就是从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。
例如这样一个二叉树:
[3,9,20,null,null,15,7]
返回结果为:
ArrayList<ArrayList<Integer>> Print(TreeNode pRoot){
ArrayList<ArrayList<Integer>> res = new ArrayList<>();
if (pRoot == null) {
return res;
}
Queue<TreeNode> queue = new LinkedList<>();
queue.add(pRoot);//先存入根结点,即从根结点开始遍历
while (!queue.isEmpty()) {
ArrayList<Integer> arrayList = new ArrayList<>();//用来存放每一层遍历到的结点
int n = queue.size();//记录 queue 的大小是为了分层
for (int i = 0; i < n; i++) {
TreeNode node = queue.poll();//将 queue 中所有的结点取出并删除
arrayList.add(node.val);//将 queue 中取出的结点放入 arrayList 中,arrayList中只存放了当前这层的所有结点,同时也将每一层分开输出
if (node.left != null) {//将下一层的结点又放入进 queue 中
queue.add(node.left);
}
if (node.right != null) {
queue.add(node.right);
}
}
res.add(arrayList);//将每一层遍历到的所有结点作为一个整体放入最后要输出的 res 中
}
return res;
}
标签:nod link int res 一个 ++ ima 结果 分层
原文地址:https://blog.51cto.com/14298563/2506723