力扣热题100道之102二叉树的层序遍历

解法
自己写的解法
因为要按层输出(层放到一个列表中,最后再放到一个列表中一块输出)。所以我创建两个列表(list和list1)来放两层的元素,这样就可以实现按层输出。
/*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val = val; }* TreeNode(int val, TreeNode left, TreeNode right) {* this.val = val;* this.left = left;* this.right = right;* }* }*/
class Solution {public List<List<Integer>> levelOrder(TreeNode root) {List<TreeNode>list=new ArrayList();List<TreeNode>list1=new ArrayList();List<List<Integer>>result=new ArrayList();if(root==null)return result;List<Integer>r=new ArrayList();list.add(root);int flag=1;while(list.size()!=0||list1.size()!=0){if(flag==1&&list.size()!=0){ TreeNode tmp=list.get(0);if(tmp.left!=null){list1.add(tmp.left);}if(tmp.right!=null){list1.add(tmp.right);}r.add(tmp.val);list.remove(0);if(list.size()==0){flag=0;result.add(r);r=new ArrayList();}}if(flag==0&&list1.size()!=0){TreeNode tmp=list1.get(0);if(tmp.left!=null){list.add(tmp.left);}if(tmp.right!=null){list.add(tmp.right);}r.add(tmp.val);list1.remove(0);if(list1.size()==0){flag=1;result.add(r);r=new ArrayList();} }}return result;}
}