面试题 04.03:特定深度节点链表
- 题目
- 解题
- 方法一:BFS
题目
题目链接
给定一棵二叉树,设计一个算法,创建含有某一深度上所有节点的链表(比如,若一棵树的深度为 D,则会创建出 D 个链表)。返回一个包含所有深度的链表的数组。
示例:
输入:[1,2,3,4,5,null,7,8]
1
/ \
2 3
/ \ \
4 5 7
/
8
输出:[[1],[2,3],[4,5,7],[8]]
解题
方法一:BFS
class Solution {
public:
vector<ListNode*> listOfDepth(TreeNode* tree) {
if(!tree) return {};
vector<ListNode*> res;
queue<TreeNode*> queue;
queue.push(tree);
while(!queue.empty()){
int l=queue.size();
ListNode* dummy=new ListNode(0);
ListNode* cur=dummy;
for(int i=0;i<l;i++){
TreeNode* node=queue.front();
queue.pop();
cur->next=new ListNode(node->val);
cur=cur->next;
if(node->left) queue.push(node->left);
if(node->right) queue.push(node->right);
}
res.push_back(dummy->next);
}
return res;
}
};