102. Binary Tree Level Order Traversal
2018-01-07 22:55
211 查看
Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, level by level).
For example:
Given binary tree [3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
return its level order traversal as:
[
[3],
[9,20],
[15,7]
]
二叉树的层级遍历 写法主要分两种 1个queue和2个queue
2个queue
For example:
Given binary tree [3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
return its level order traversal as:
[
[3],
[9,20],
[15,7]
]
二叉树的层级遍历 写法主要分两种 1个queue和2个queue
2个queue
public List<List<Integer>> levelOrder(TreeNode root) { List<List<Integer>> res = new ArrayList<List<Integer>>(); if(root == null) return res; Queue<TreeNode> queue = new LinkedList<TreeNode>(); queue.offer(root); while (!queue.isEmpty()) { Queue<TreeNode> queue2 = new LinkedList<TreeNode>(); List<Integer> list = new ArrayList<Integer>(); while (!queue.isEmpty()) { TreeNode node = queue.poll(); list.add(node.val); if (node.left != null) queue2.offer(node.left); if (node.right != null) queue2.offer(node.right); } res.add(list); queue = queue2; } return res; }1个queue 各层之间用null分隔
public List<List<Integer>> levelOrder(TreeNode root) { List<List<Integer>> res = new ArrayList<List<Integer>>(); if(root == null) return res; Queue<TreeNode> queue = new LinkedList<TreeNode>(); queue.offer(root); queue.offer(null); List<Integer> list = new ArrayList<Integer>(); while (!queue.isEmpty()) { TreeNode node = queue.poll(); if (node == null) { res.add(list); list = new ArrayList<Integer>(); if (!queue.isEmpty()) queue.offer(null); } else { list.add(node.val); if (node.left != null) queue.offer(node.left); if (node.right != null) queue.offer(node.right); } } return res; }下面这个思路也很厉害 1个queue 但是没有添加null
public List<List<Integer>> levelOrder(TreeNode root) { Queue<TreeNode> queue = new LinkedList<TreeNode>(); List<List<Integer>> wrapList = new LinkedList<List<Integer>>(); if(root == null) return wrapList; queue.offer(root); while(!queue.isEmpty()){ int levelNum = queue.size(); List<Integer> subList = new LinkedList<Integer>(); for(int i=0; i<levelNum; i++) { if(queue.peek().left != null) queue.offer(queue.peek().left); if(queue.peek().right != null) queue.offer(queue.peek().right); subList.add(queue.poll().val); } wrapList.add(subList); } return wrapList; }
相关文章推荐
- 102. Binary Tree Level Order Traversal
- 102. Binary Tree Level Order Traversal
- 102. Binary Tree Level Order Traversal & 107. Binary Tree Level Order Traversal II & 103. Binary Tre
- 102. Binary Tree Level Order Traversal
- 102. Binary Tree Level Order Traversal
- 102. Binary Tree Level Order Traversal
- C++详解Leetcode:102. Binary Tree Level Order Traversal
- 102. Binary Tree Level Order Traversal
- LeetCode笔记:102. Binary Tree Level Order Traversal
- 102. Binary Tree Level Order Traversal
- Tree-----宽度优先遍历树(102. Binary Tree Level Order Traversal)
- 102. Binary Tree Level Order Traversal
- 102. Binary Tree Level Order Traversal
- leetcode微软谷歌面试题102. Binary Tree Level Order Traversal
- 102. Binary Tree Level Order Traversal
- 102. Binary Tree Level Order Traversal
- 102. Binary Tree Level Order Traversal ------层序遍历
- Leetcode:102. Binary Tree Level Order Traversal(JAVA)
- 102. Binary Tree Level Order Traversal
- 102. Binary Tree Level Order Traversal