2 Star 10 Fork 2

CG国斌 / myleetcode

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
_102.java 2.28 KB
一键复制 编辑 原始数据 按行查看 历史
CG国斌 提交于 2020-05-16 19:04 . 优化diam
package com.hit.basmath.learn.binary_tree;
import com.hit.common.TreeNode;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Queue;
/**
* 102. Binary Tree Level Order Traversal
* <p>
* Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, level by level).
* <p>
* For example:
* <p>
* Given binary tree [3,9,20,null,null,15,7],
* <p>
* 3
* / \
* 9 20
* / \
* 15 7
* <p>
* return its level order traversal as:
* <p>
* [
* [3],
* [9,20],
* [15,7]
* ]
*/
public class _102 {
/**
* 递归
*
* @param root
* @return
*/
public List<List<Integer>> levelOrder(TreeNode root) {
List<List<Integer>> ans = new ArrayList<>();
if (root == null) return ans;
helper(root, ans, 0);
return ans;
}
private void helper(TreeNode node, List<List<Integer>> ans, int level) {
if (ans.size() == level) {
ans.add(new ArrayList<>());
}
ans.get(level).add(node.val);
if (node.left != null) {
helper(node.left, ans, level + 1);
}
if (node.right != null) {
helper(node.right, ans, level + 1);
}
}
public List<List<Integer>> levelOrder2(TreeNode root) {
List<List<Integer>> ans = new ArrayList<>();
if (root == null) return ans;
Queue<TreeNode> queue = new LinkedList<>();
queue.add(root);
int level = 0;
while (!queue.isEmpty()) {
// start the current level
ans.add(new ArrayList<>());
// number of elements in the current level
int levelLength = queue.size();
for (int i = 0; i < levelLength; ++i) {
TreeNode node = queue.remove();
// fulfill the current level
ans.get(level).add(node.val);
// add child nodes of the current level
// in the queue for the next level
if (node.left != null) {
queue.add(node.left);
}
if (node.right != null) {
queue.add(node.right);
}
}
// go to next level
level++;
}
return ans;
}
}
Java
1
https://gitee.com/guobinhit/myleetcode.git
git@gitee.com:guobinhit/myleetcode.git
guobinhit
myleetcode
myleetcode
master

搜索帮助