递归解法:
public ArrayList<ArrayList<Integer>> levelOrder (TreeNode root) {
// write code here
if(Objects.isNull(root)){
return new ArrayList<>();
}
ArrayList<TreeNode> nodes = new ArrayList<TreeNode>(){{
add(root);
}};
ArrayList<ArrayList<Integer>> result = new ArrayList<>();
levelOrder(result,nodes);
return result;
}
public void levelOrder (ArrayList<ArrayList<Integer>> result, ArrayList<TreeNode> nodes){
if(nodes.isEmpty()){
return;
}
ArrayList<Integer> saved = new ArrayList<>();
nodes.forEach(node -> {
saved.add(node.val);
});
result.add(saved);
ArrayList<TreeNode> list = new ArrayList<>();
nodes.forEach(node -> {
if(node.left != null){
list.add(node.left);
}
if(node.right != null){
list.add(node.right);
}
});
levelOrder(result,list);
}
京公网安备 11010502036488号