0
点赞
收藏
分享

微信扫一扫

面试题 04.03. 特定深度节点链表


面试题 04.03. 特定深度节点链表

面试题 04.03. 特定深度节点链表_for循环

层序遍历加虚拟节点

思路

本题显然需要使用树的层序遍历,关键是怎么把各层节点放入一个串联起来的链表

  • 使用队列进行层序遍历
  • 虚拟节点

实现代码

class Solution {
public ListNode[] listOfDepth(TreeNode tree) {
ListNode dummy = new ListNode(0);
LinkedList<TreeNode> queue = new LinkedList<>();
List<ListNode> res = new ArrayList<>();
TreeNode root;
queue.add(tree);
int size;
while(!queue.isEmpty()){
ListNode cur = dummy;
//这里记录当前队列的大小,不能在for循环中判断队列大小 因为for循环中
//左右孩子存在,队列会变长
size = queue.size();
for(int i = 0; i < size; i++){
root = queue.remove();
cur.next = new ListNode(root.val);
if(root.left != null){
queue.add(root.left);
}
if(root.right != null){
queue.add(root.right);
}
cur = cur.next;
}
res.add(dummy.next);
}
return res.toArray(new ListNode[]{});
}
}


举报

相关推荐

0 条评论