层次遍历
层次遍历二叉树并不难,主要是队列的操作比较陌生(之前惯用栈),在这里记录一下
层次遍历即一层一层地读出来,很容易理解
我这里用队列存储结点,每层循环后逐个弹出,进行一个结点进行迭代 `class Solution { public int[] levelOrder(TreeNode root) { List list=xiajibaxie(root); int arr[]=new int[list.size()]; for (int i = 0; i <list.size() ; i++) { arr[i]=list.get(i); } return arr; } public List xiajibaxie(TreeNode root){ List list=new ArrayList<>(); Queue deque=new LinkedList<>();//建立队列,LinkedList是双向链表,它既可以 // 充当队列,也可以当作栈使用
TreeNode curr=root;
while(curr!=null){
list.add(curr.val);
TreeNode curr_left=curr.left;
TreeNode curr_right=curr.right;
if(curr_left!=null){
deque.add(curr_left);
}
if(curr_right!=null){
deque.add(curr_right);
}
curr=deque.poll();//弹出,进行下一层的遍历
}
return list;
}
}`