题目描述:
给定一棵二叉树,设计一个算法,创建含有某一深度上所有节点的链表(比如,若一棵树的深度为 D,则会创建出 D 个链表)。返回一个包含所有深度的链表的数组。
思路:
层序遍历,每层新建一个链表
代码如下:
class Solution {
public:
vector<ListNode*> listOfDepth(TreeNode* tree) {
vector<ListNode*>res;
queue<TreeNode*>que;
que.push(tree);
while(!que.empty()){
int len=que.size();
ListNode* head=new ListNode(-1);
ListNode* h=head;
for(int i=0;i<len;i++){
TreeNode* cur=que.front();
que.pop();
h->next=new ListNode(cur->val);
h=h->next;
h->next=NULL;
if(cur->left){
que.push(cur->left);
}
if(cur->right){
que.push(cur->right);
}
}
res.push_back(head->next);
}
return res;
}
};