之所以把这两个题放在一起,是因为他们的返回值类型都是==List<List< Integer>>==在链表中放入的元素是链表
我们可以一起比较学习。
二叉树的层序遍历
LeetCode题目:链接:二叉树的层序遍历
class Solution {
public List<List<Integer>> levelOrder(TreeNode root) {
List<List<Integer>> list = new ArrayList<>();
if (root == null) {
return list;
}
Queue<TreeNode> queue = new LinkedList<>();
Queue<Integer> level = new LinkedList<>();
queue.add(root);
level.add(0);
while (!queue.isEmpty()) {
TreeNode node = queue.remove();
int le = level.remove();
if (le >= list.size()) {
List<Integer> row = new ArrayList<>();
list.add(row);
}
list.get(le).add(node.val);
if (node.left != null) {
queue.add(node.left);
level.add(le + 1);
}
if (node.right != null) {
queue.add(node.right);
level.add(le + 1);
}
}
return list;
}
}
杨辉三角
LeetCode题目:链接:杨辉三角
class Solution {
public List<List<Integer>> generate(int numRows) {
List<List<Integer>> list = new ArrayList<>();
List<Integer> row = new ArrayList<>();
row.add(1);
list.add(row);
if (numRows == 1) {
return list;
}
row = new ArrayList<>();
row.add(1);
row.add(1);
list.add(row);
if (numRows == 2) {
return list;
}
for (int i = 3; i <= numRows; i++) {
row = new ArrayList<>();
row.add(1);
for (int j = 2; j < i; j++) {
List<Integer> prevRow = list.get(i - 2);
int a = prevRow.get(j - 2);
int b = prevRow.get(j - 1);
row.add(a + b);
}
row.add(1);
list.add(row);
}
return list;
}
}