0
点赞
收藏
分享

微信扫一扫

顺序表练习

Star英 2024-04-22 阅读 11

思路:

        层序遍历就是从左到右依次遍历。这个时候就可以使用队列的方式。例如先把头节点入队,然后遍历开始,首先计算队列长度,第一层,长度为了,遍历一次,依次出队,头结点出队,然后头结点的左右子节点入队。再次遍历,队列长度为2,在出队入队,队列长度为4。这样每次每次遍历都是把当层的所有节点轮询完成,然后每个节点的左右节点在入队,完成下一层的关联。

代码如下:

  public List<List<Integer>> levelOrder(TreeNode root) {
		List<List<Integer>> ans = new LinkedList<>();
		if (root==null){
			return ans;
		}
		//构建一个队列 先进先出
		Queue<TreeNode> queue = new LinkedList<>();
		queue.add(root);
		while (!queue.isEmpty()){
			List<Integer> list = new ArrayList<>();
			//每次记录 queue的长度
			int size = queue.size();
			for (int i = 0; i <size ; i++) {
				TreeNode cur = queue.poll();
				if (cur.left!=null){
					queue.add(cur.left);
				}
				if (cur.right!=null){
					queue.add(cur.right);
				}
				list.add(cur.val);
			}
			ans.add(list);
		}
		return ans;
	}
举报

相关推荐

0 条评论