给定一棵二叉树,设计一个算法,创建含有某一深度上所有节点的链表(比如,若一棵树的深度为 D,则会创建出 D 个链表)。返回一个包含所有深度的链表的数组。
示例:
输入:[1,2,3,4,5,null,7,8] 1 / \ 2 3 / \ \ 4 5 7 / 8 输出:[[1],[2,3],[4,5,7],[8]]思路:
完整代码实现:
class Solution { public: vector<ListNode*> listOfDepth(TreeNode* tree) { if(tree==nullptr)return vector<ListNode*>(); vector<ListNode*> v; queue<TreeNode*> q; q.push(tree); while(!q.empty()){ ListNode *h = new ListNode(); ListNode *k=h; for(int i=q.size(); i>0; i--){ TreeNode *p = q.front(); q.pop(); k->next = new ListNode(p->val); k = k->next; if(p->left)q.push(p->left); if(p->right)q.push(p->right); } v.push_back(h->next); } return v; } };