学习目标:
本次学习目标为 力扣初级算法-树,其中主要的LC如下:
- 二叉树的层序遍历
学习内容:
- 二叉树的层序遍历 -----([链接](https://leetcode-cn.com/leetbook/read/top-interview-questions-easy/xnldjj/)
给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。
例如,二叉树:[3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
返回其层序遍历结果:
[
[3],
[9,20],
[15,7]
]
解题思路:
-
解法一: 直接递归
-
解题思路:
* -
代码实现:
/**
* 解法一: BFS
*/
public List<List<Integer>> levelOrder(TreeNode root) {
// 边界问题: 入参是空
if (null == root){
return new ArrayList<>();
}
// 声明 队列 及最后返回的结果
Queue<TreeNode> queue = new LinkedList<>();
List<List<Integer>> result = new ArrayList<>();
// 根节点入队列
queue.add(root);
while (!queue.isEmpty()){
int size = queue.size();
List<Integer> subList = new ArrayList<>();
for (int i = 0; i < size; i++) {
TreeNode node = queue.poll();
subList.add(node.val);
// 判断当前节点是否还有子节点,子节点再分左右子节点
if (null != node.left){
queue.add(node.left);
}
if (null != node.right){
queue.add(node.right);
}
}
result.add(subList);
}
return result;
}