解题方法—java
从Ⅰ到Ⅲ,每一题都想着自己写一下,结果最后都还是乖乖跑去看大神的解法。还是题目写的太少了~
- 双端队列。通过判断res.size() % 2 的值来判断是奇数层还是偶数层,…一开始我还想着设置一个变量k来记录层数…
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
public List<List<Integer>> levelOrder(TreeNode root) {
Queue<TreeNode> q = new LinkedList<>();
List<List<Integer>> res = new ArrayList<>();
if(root != null){
q.offer(root);
}
while(q.size() != 0){
LinkedList<Integer> tmp = new LinkedList<>();
for(int i = q.size(); i > 0; i--){
TreeNode node = q.poll();
if(res.size() % 2 == 0){
tmp.addLast(node.val);
}else{
tmp.addFirst(node.val);
}
if(node.left != null) q.offer(node.left);
if(node.right != null) q.offer(node.right);
}
res.add(tmp);
}
return res;
}
}
这篇博客主要介绍了如何使用Java解决LeetCode的一个问题,即二叉树的层次遍历,并且在输出时将奇数层和偶数层的节点顺序反转。博主尝试自己独立完成,但最终参考了其他优秀解法。解决方案中利用了双端队列,根据层次的奇偶性决定节点的添加位置。

350

被折叠的 条评论
为什么被折叠?



