迭代方式:
class Solution {
// 定义一个成员变量res来存储层序遍历的结果
List<List<Integer>> res = new ArrayList<>();
// levelOrder方法是层序遍历的接口,它接受一个二叉树的根节点root
public List<List<Integer>> levelOrder(TreeNode root) {
// 如果根节点为空,则层序遍历的结果为空列表
if (root == null) return res;
// dfs方法是一个递归方法,用于执行深度优先搜索
dfs(root, 0); // 初始调用,level为0,代表第一层
// 返回存储层序遍历结果的列表res
return res;
}
// dfs方法是递归函数,用于遍历二叉树的每一层
// root表示当前遍历到的节点,level表示当前的层级
public void dfs(TreeNode root, int level) {
// 如果当前节点为空,则直接返回
if (root == null) return;
// 如果当前层还没有被访问过,则创建一个新的列表来存储该层的数据
if (level == res.size()) res.add(new ArrayList<Integer>());
// 将当前节点的值添加到对应层级的列表中
res.get(level).add(root.val);
// 递归遍历左子树,层级加1
dfs(root.left, level + 1);
// 递归遍历右子树,层级加1
dfs(root.right, level + 1);
}
}
递归方式:
class Solution {
// 定义一个成员变量res来存储层序遍历的结果
List<List<Integer>> res = new ArrayList<>();
// levelOrder方法是层序遍历的接口,它接受一个二叉树的根节点root
public List<List<Integer>> levelOrder(TreeNode root) {
// 如果根节点为空,则层序遍历的结果为空列表
if (root == null) return res;
// dfs方法是一个递归方法,用于执行深度优先搜索
dfs(root, 0); // 初始调用,level为0,代表第一层
// 返回存储层序遍历结果的列表res
return res;
}
// dfs方法是递归函数,用于遍历二叉树的每一层
// root表示当前遍历到的节点,level表示当前的层级
public void dfs(TreeNode root, int level) {
// 如果当前节点为空,则直接返回
if (root == null) return;
// 如果当前层还没有被访问过,则创建一个新的列表来存储该层的数据
if (level == res.size()) res.add(new ArrayList<Integer>());
// 将当前节点的值添加到对应层级的列表中
res.get(level).add(root.val);
// 递归遍历左子树,层级加1
dfs(root.left, level + 1);
// 递归遍历右子树,层级加1
dfs(root.right, level + 1);
}
}