プログラマー面接金典:特定の深さノードチェーンテーブル


特定の深度ノードチェーンテーブル
  • タイトル説明
  • 私の解題
  • タイトルの説明
    ツリーを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%のユーザーを破った