一、题目介绍
给定一棵二叉树,设计一个算法,创建含有某一深度上所有节点的链表(比如,若一棵树的深度为 D,则会创建出 D 个链表)。返回一个包含所有深度的链表的数组。
示例:
输入:[1,2,3,4,5,null,7,8]
1
/ \
2 3
/ \ \
4 5 7
/
8
输出:[[1],[2,3],[4,5,7],[8]]
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/list-of-depth-lcci
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
二、解题思路
本题考查二叉树的层次遍历。
三、解题代码
class Solution {
public:
//层次遍历
vector<ListNode*> listOfDepth(TreeNode* tree) {
vector<ListNode*> vl;
if(tree == NULL)
return vl;
queue<TreeNode*> que;
que.push(tree);
while(!que.empty())
{
int n = que.size();
TreeNode* pTree = NULL;
ListNode* head = new ListNode(0);
ListNode* pList = head;
for(int i = 0; i < n; ++i)
{
pTree = que.front();
pList->next = new ListNode(pTree->val);
pList = pList->next;
que.pop();
if(pTree->left)
que.push(pTree->left);
if(pTree->right)
que.push(pTree->right);
}
pList->next = NULL;
vl.push_back(head->next);
}
return vl;
}
};