二叉树的层次遍历
/**
* Definition for binary tree
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
public class Solution {
public ArrayList<ArrayList<Integer>> levelOrder(TreeNode root) {
ArrayList<ArrayList<Integer>> ans= new ArrayList<>();
if(root == null){
return ans;
}
ArrayList<TreeNode> queue = new ArrayList<>();
int num1 = 1;
int num2 = 0;
queue.add(root);
int k = 0;
while(queue.size() != 0){
ArrayList<Integer> tarr = new ArrayList<>();
for(int i = 0; i < num1; ++i){
TreeNode t = queue.remove(0);
tarr.add(t.val);
if(t.left != null){
queue.add(t.left);
++num2;
}
if(t.right != null){
queue.add(t.right);
++num2;
}
}
num1 = num2;
num2 = 0;
ans.add(tarr);
}
return ans;
}
}