1.トピックの紹介
バイナリツリーが与えられた場合、特定の深さのすべてのノードを含むリンクリストを作成するアルゴリズムを設計します(たとえば、ツリーの深さがDの場合、Dのリンクリストが作成されます)。すべての深さのリンクされたリストの配列を返します。
例:
入力:[1,2,3,4,5、null、7,8]
1
/ \
2
/ \ \
4 5 7
/
8
出力:[[1]、[2,3]、[4,5,7]、[8]]
出典:LeetCode
リンク:https ://leetcode-cn.com/problems/list-of-depth-lcci
著作権はLeetCodeが所有しています。商用の再版については、公式の承認に連絡してください。非商用の再版については、出典を示してください。
2つの問題解決のアイデア
この質問では、バイナリツリーのレベルトラバーサルを調べます。
3つの問題解決コード
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;
}
};