二叉树-删除级别大于或等于给定级别的节点

Binary tree - Delete nodes whose level is greater or equal than given one

本文关键字:节点 删除 大于 二叉树      更新时间:2023-10-16

正如标题所说,我需要编写一个函数,从二叉树中删除级别大于或等于函数中给定级别的所有节点作为参数,例如,我需要删除级别为2或更高的所有节点。

但是,我不能向节点添加任何属性,也不能使用堆栈、队列等或任何其他结构。

对此有什么想法吗?我会非常感激的。

Node和deleteNode的实现取决于您:

   void deleteLevel(Node *node, size_t level)
    {
        if(node->right)
        {
            if(level == 0)
            {
                deleteNode(node->right);
                node->right = nullptr;
            }
            else deleteLevel(node->right, level - 1);
        }
        if(node->left)
        {
            if(level == 0)
            {
                deleteNode(node->left);
                node->left = nullptr;
            }
            else deleteLevel(node->left, level - 1);
        }
    }
    ...
    deleteLevel(aNode, levlOfANode);

Node和deleteNode的实现取决于您。