Java二叉树的层序遍历

LeetCode

思想

  • 1.根结点先入队
  • 2.出队访然后问其左右孩子结点并入队
  • 3.重复2的步骤直到队列为空

算法

    public ArrayList<ArrayList<Integer>> levelOrder (TreeNode root) {
    
    
        if (root == null) return new ArrayList<>();
        ArrayList<ArrayList<Integer>> result = new ArrayList<>();
        Queue<TreeNode> queue = new LinkedList<>();
        queue.offer(root);
        while (!queue.isEmpty()) {
    
    
            ArrayList<Integer> temp = new ArrayList<>();
            //记录当前queue的大小,这几个值属于同一层
            int count = queue.size();
            for (int i = 0; i < count; i++) {
    
    
                //得到当前遍历结点
                TreeNode treeNode = queue.poll();
                temp.add(treeNode.val);
                //遍历子结点,添加到队列中
                if (treeNode.left != null) queue.offer(treeNode.left);
                if (treeNode.right != null) queue.offer(treeNode.right);
            }
            result.add(temp);
        }
        return result;
    }
}

猜你喜欢

转载自blog.csdn.net/yu540135101/article/details/113987531