C++ 如何从二叉树及其子树中删除节点并计算剩余节点数?

C++ 如何从二叉树及其子树中删除节点并计算剩余节点数?,c++,data-structures,tree,C++,Data Structures,Tree,二叉树是使用数组实现的。第一个元素是根节点,其他元素是子节点。树中有N个元素。N作为用户的输入 如何从中删除节点 这样,当删除时,其子树中的所有节点也必须删除 那么,如何计算剩余的元素数呢?我可以使用for循环来执行此操作吗 作为程序的一部分,我编写了这么多代码: #include <iostream> using namespace std; int main() { int N, A[100], X, left, index; cin >> N;

二叉树是使用数组实现的。第一个元素是根节点,其他元素是子节点。树中有N个元素。N作为用户的输入

如何从中删除节点

这样,当删除时,其子树中的所有节点也必须删除

那么,如何计算剩余的元素数呢?我可以使用for循环来执行此操作吗

作为程序的一部分,我编写了这么多代码:

#include <iostream>
using namespace std;
int main()
{
    int N, A[100], X, left, index;
    cin >> N;
    for(int i = 0; i < N; i++)
        cin >> A[i];
    cin >> X;
    left = N;
    for(i = 0; i < N; i++)
        if (A[i] == X)
            index = i;
    if(index == 0)
        left = 0;
    cout << left;
}
#包括
使用名称空间std;
int main()
{
int N,A[100],X,左,索引;
cin>>N;
对于(int i=0;i>A[i];
cin>>X;
左=N;
对于(i=0;icout数组中的元素是如何排列的?如果N=15且[0]对应于根节点,那么什么对应于根节点的右子节点?是[2],还是[8],还是什么?A[2]是右节点。A[1}是左。
left
总是
N
0
这就是你真正需要的吗?是的。这就是我需要的。好吧,把问题分解成几个部分。当你迭代数组时,你看到如何跟踪树中的深度了吗?如果你找到[j]在深度d,您知道该节点的子节点在数组中的位置吗(如果存在)?您知道如何删除单个节点吗?先解决简单问题,然后解决困难问题。