如何解决如何删除数组二叉树中的节点及其所有后代?
我正在尝试删除给定节点的子树,但它无法正常工作。
这是我的代码:
void remove(T node)
{
int i;
for (i = 0; i < maxNodes; i++)
{
if (data[i] == node)
break;
}
if (data[i] != node)
{
cout << "Node does not exist.";
return;
}
bool flag = true;
int index = i;
while (status[i])
{
for (int i = index; flag == true && i < maxNodes; i = i * 2 + 1)
{
if (!status[i])
flag = false;
else
status[i] = false;
}
index = index * 2 + 2;
i = index;
flag = true;
}
}
代码说明:
-
maxNodes = pow(2,height) - 1;
-
leftChildindex = 2 * i + 1;
-
rightChildindex = 2 * i + 2;
-
data* 存储节点值
-
status* 存储表示数据数组中对应索引处节点存在的布尔值
谁能帮帮我?谢谢!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。