基于队列的层次遍历二叉树

230 阅读1分钟

层次遍历

层次遍历二叉树并不难,主要是队列的操作比较陌生(之前惯用栈),在这里记录一下

层次遍历即一层一层地读出来,很容易理解

我这里用队列存储结点,每层循环后逐个弹出,进行一个结点进行迭代 `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;
}

}`