プログラマー面接金典:特定の深さノードチェーンテーブル
特定の深度ノードチェーンテーブルタイトル説明 私の解題 タイトルの説明
ツリーを1本指定し、深さのすべてのノードを含むチェーンテーブルを作成するアルゴリズムを設計します(たとえば、ツリーの深さがDの場合、Dチェーンテーブルが作成されます).すべての深さを含むチェーンテーブルの配列を返します.
私の解題
実行時間:4 ms、すべてのC++コミットで78.50%のユーザーメモリ消費量を破った:10.6 MB、すべてのC++コミットで100.00%のユーザーを破った
ツリーを1本指定し、深さのすべてのノードを含むチェーンテーブルを作成するアルゴリズムを設計します(たとえば、ツリーの深さがDの場合、Dチェーンテーブルが作成されます).すべての深さを含むチェーンテーブルの配列を返します.
私の解題
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
void listofDepthCore(TreeNode* tree, vector<ListNode *>&list, int level)
{
if(tree==nullptr) return;
ListNode* node = new ListNode(tree->val);
if(list.size()==level)
{
list.push_back(node);
}
else
{
ListNode *p = list[level];
while(p->next!=nullptr) p = p->next;
p->next = node;
}
listofDepthCore(tree->left, list, level+1);
listofDepthCore(tree->right, list, level+1);
}
vector<ListNode*> listOfDepth(TreeNode* tree) {
vector<ListNode*>list;
int level=0;
listofDepthCore(tree, list, level);
return list;
}
};
実行時間:4 ms、すべてのC++コミットで78.50%のユーザーメモリ消費量を破った:10.6 MB、すべてのC++コミットで100.00%のユーザーを破った