程序员面试金典:特定深度节点链表

特定深度节点链表

    • 题目描述
    • 我的解题

题目描述

给定一棵二叉树,设计一个算法,创建含有某一深度上所有节点的链表(比如,若一棵树的深度为 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%的用户

你可能感兴趣的:(C++,leetcode,算法)