首页 > 试题广场 >

删层子树

[编程题]删层子树
  • 热度指数:1613 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
牛牛有一棵n个节点的二叉树,该二叉树每个节点的权值为1。牛牛想要删掉该树其中的k层节点,删除序列为
如有一棵二叉树,删除其中的第3层节点:
      1
     / \
    1   1
   / \  /
  1   1 1
 / \   \
1   1   1
 \  /
  1 1
其会变为如下四棵二叉树:
      1
     / \
    1   1

1   1   1
 \  /
  1 1
牛牛现在给你初始二叉树,以及表示删除第几层的删除序列a。牛牛希望能能将最后剩下的子树,按照根节点层序遍历的顺序返回子树数组。
示例1

输入

{1,1,1,1,1,1,#,1,1,#,1,#,#,#,1,1},[3]

输出

[{1,1,1},{1,#,1},{1,1},{1}]

说明

其为如题意给定的二叉树所得到的子树序列。
示例2

输入

{1,#,1,#,1,#,1,#,1},[2,4]

输出

[{1},{1},{1}]

说明

给定的为一条长度为5的链,删去第2层与4层后剩下三个单节点子树。

备注:

说明:本题目包含复杂数据结构TreeNode,点此查看相关信息
头像 直角三角熊
发表于 2023-03-19 10:52:57
牛客不保存代码,记录一下 数据结构使用queue,方便层序遍历。 class Solution { public: vector<TreeNode*> deleteLevel(TreeNode* root, vector<int>& a) { vector& 展开全文