题解 | #求二叉树的层序遍历#
求二叉树的层序遍历
https://www.nowcoder.com/practice/04a5560e43e24e9db4595865dc9c63a3
import java.util.*; /* * public class TreeNode { * int val = 0; * TreeNode left = null; * TreeNode right = null; * } */ public class Solution { /** * * @param root TreeNode类 * @return int整型ArrayList<ArrayList<>> */ public ArrayList<ArrayList<Integer>> levelOrder (TreeNode root) { // write code here ArrayList<ArrayList<Integer>> out = new ArrayList<>(); if (root == null) { return out; } else { Stack<ArrayList<TreeNode>> stl = new Stack<>(); ArrayList<TreeNode> rootnode = new ArrayList<>(); rootnode.add(root); stl.add(rootnode); while (!stl.isEmpty()) { ArrayList<TreeNode> nows = stl.pop(); ArrayList<TreeNode> temp = new ArrayList<>(); ArrayList<Integer> tempout = new ArrayList<>(); for (int i = 0; i < nows.size(); i++) { TreeNode now = nows.get(i); tempout.add(now.val); if (now.left != null) { temp.add(now.left); } if (now.right != null) { temp.add(now.right); } } if (temp.size()>0){stl.push(new ArrayList<>(temp));} out.add(new ArrayList<>(tempout)); } return out; } } }