【Leetcode】層次遍歷二叉樹

思路:BFS

1、根節點加入隊列;
2、遍歷隊列中的節點,將節點的子節點加入隊列; (如不需要逐行,則結束)
3、如何實現逐行?需要記錄每行隊列的長度;

代碼:

	public List<List<Integer>> levelOrder(TreeNode root) {
		List<List<Integer>> reslist = new ArrayList<>();
		Queue<TreeNode> queue = new LinkedList<>();
		TreeNode node;
		int size;
		
		if(root == null)
			return null;
		
		queue.offer(root);
		while(!queue.isEmpty()) {
			List<Integer> tmplist = new ArrayList<>();
			size = queue.size();
			while(size != 0) {
				node = queue.poll();
				tmplist.add(node.val);
				size--;
				
				if(node.left != null)
					queue.offer(node.left);
				if(node.right != null)
					queue.offer(node.right);
			}
			reslist.add(tmplist);
		}
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章