正如标题所说,我需要编写删除二叉树中所有节点的函数,这些节点的级别大于或等于作为参数的函数中的给定级别,例如,我需要删除级别2和更高级别的所有节点。
但是,我无法向节点添加任何属性或使用堆栈,队列等或任何其他结构。
有什么想法吗?我非常感激。
答案 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的实现取决于你。