你的位置:首页 > 信息动态 > 新闻中心
信息动态
联系我们

面试题 04.03:特定深度节点链表

2021/12/8 16:27:08

面试题 04.03:特定深度节点链表

  • 题目
  • 解题
    • 方法一:BFS

题目

题目链接
给定一棵二叉树,设计一个算法,创建含有某一深度上所有节点的链表(比如,若一棵树的深度为 D,则会创建出 D 个链表)。返回一个包含所有深度的链表的数组。
示例:

输入:[1,2,3,4,5,null,7,8]

        1
       /  \ 
      2    3
     / \    \ 
    4   5    7
   /
  8

输出:[[1],[2,3],[4,5,7],[8]]

解题

方法一:BFS

class Solution {
public:
    vector<ListNode*> listOfDepth(TreeNode* tree) {
        if(!tree) return {};
        vector<ListNode*> res;
        queue<TreeNode*> queue;
        queue.push(tree);
        while(!queue.empty()){
            int l=queue.size();
            ListNode* dummy=new ListNode(0);
            ListNode* cur=dummy;
            for(int i=0;i<l;i++){
                TreeNode* node=queue.front();
                queue.pop();
                cur->next=new ListNode(node->val);
                cur=cur->next;
                if(node->left) queue.push(node->left);
                if(node->right) queue.push(node->right);
            }
            res.push_back(dummy->next);
        }
        return res;
    }
};