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

时间:2014-09-23 21:23:20

标签: c++ binary-tree binary-search-tree

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

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

有什么想法吗?我非常感激。

1 个答案:

答案 0 :(得分:0)

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的实现取决于你。