Open youngyangyang04 opened 3 months ago
这一套模板连打十个也太爽了!致敬卡哥!
打卡
做完了,爽
public class Solution { // 层序遍历的模板
public List<List<Integer>> levelOrder(TreeNode root) {
List<List<Integer>> result = new ArrayList<>();
Queue<TreeNode> q = new LinkedList<>();
if (root == null) return result;
q.offer(root);
while (!q.isEmpty()) {
List<Integer> res = new ArrayList<>();
int size = q.size();
for (int i = 0; i < size; i++) {
TreeNode node = q.poll();
res.add(node.val);
if (node.left != null) q.offer(node.left);
if (node.right != null) q.offer(node.right);
}
result.add(res);
}
return result;
}
}
// 在 return result; 前加上 Collections.reverse(result);
// 1. 将 List<List<Integer>> result 改为 List<Integer> result
// 2. 将 List<Integer> res = new ArrayList<>(); 改为 int res = 0;
// 3. 将 res.add(node.val); 改为 res = node.val;
// 1. 将 List<List<Integer>> result 改为 List<Double> result
// 2. 将 List<Integer> res = new ArrayList<>(); 改为 Double sum = 0.0;
// 3. 将 res.add(node.val); 改为 sum += node.val;
// 4. 将 result.add(res); 改为 result.add(sum / size);
// 1. 将 Queue<TreeNode> q 改为 Queue<Node> q
// 2. 将 TreeNode node 改为 Node node
// 3. 将对左右节点的遍历, 改为对所有孩子的遍历, 即:
// for(Node child : node.children) {if (child != null) q.offer(child);}
// 1. 将 List<List<Integer>> result 改为 List<Integer> result
// 2. 将 List<Integer> res = new ArrayList<>(); 改为 int max = Integer.MIN_VALUE;
// 3. 将 res.add(node.val); 改为 if(node.val > max) max = node.val;
// 1. 将 TreeNode 改为 Node, 将 result 改为 root
// 2. 将 List<Integer> res = new ArrayList<>(); 改为 Node temp = null;
// 3. 将 res.add(node.val); 改为 if(i > 0) {temp.next = node;} temp = node;
// 4. 将 result.add(res); 改为 temp.next = null;
// 1. 将 List<List<Integer>> result 改为 int result = 0;
// 2. 将 List<Integer> res 改为 result++;
// 3. 删掉 res.add(node.val); 删掉 result.add(res);
// 1. 将 List<List<Integer>> result 改为 int result = 0;
// 2. 将 List<Integer> res 改为 result++;
// 3. 删掉 res.add(node.val); 删掉 result.add(res);
// 4. 增加 if (node.left == null && node.right == null) return result;
强
战斗,爽
两层循环太复杂了。用我的一层循环。 class Solution: def levelOrder(self, root: Optional[TreeNode]) -> List[List[int]]: res = [] if root is None: return res
root_stack = [root]
next_stack = []
one_floor = []
while root_stack:
one_node = root_stack.pop(0)
one_floor.append(one_node.val)
if one_node.left:
next_stack.append(one_node.left)
if one_node.right:
next_stack.append(one_node.right)
if not root_stack:
root_stack = next_stack
res.append(one_floor)
one_floor = []
next_stack = []
return res
答案可以做成tab切换的形式吗?这个排版太费了
打卡
https://www.programmercarl.com/0102.%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E5%B1%82%E5%BA%8F%E9%81%8D%E5%8E%86.html