C++ 二叉搜索树类C+中的拆分函数+;

C++ 二叉搜索树类C+中的拆分函数+;,c++,binary-search-tree,pointer-to-pointer,C++,Binary Search Tree,Pointer To Pointer,我目前正在为一个comp-sci类做作业,该类要求我使用二进制搜索树实现一系列不同的函数。我现在很难理解的当前函数通过树并递归地将其拆分为指向两个独立树的指针。我通常对如何使用指向节点对象的指针(这是他给我们赋值时设置函数的方式)的指针感到困惑 void拆分(节点*T、整数k、节点**L、节点**R) { if(T==nullptr){ } 否则{ 如果(T->输入右键、k键和右键L键和右键R键); temp->right=nullptr; 温度->右侧=右侧; R=&右R; L=&temp;

我目前正在为一个comp-sci类做作业,该类要求我使用二进制搜索树实现一系列不同的函数。我现在很难理解的当前函数通过树并递归地将其拆分为指向两个独立树的指针。我通常对如何使用指向节点对象的指针(这是他给我们赋值时设置函数的方式)的指针感到困惑

void拆分(节点*T、整数k、节点**L、节点**R)
{
if(T==nullptr){
}
否则{
如果(T->输入右键、k键和右键L键和右键R键);
temp->right=nullptr;
温度->右侧=右侧;
R=&右R;
L=&temp;
}
否则{
节点*LeftL;
节点*LeftR;
节点*temp=T;
拆分(T->left、k和LeftL以及LeftR);
temp->left=nullptr;
温度->左=左;
R=&temp;
L=&LeftL;
}
}
}
从逻辑上讲,,他描述说,如果当前树节点的键/值小于调用函数时给定的值,则应将当前节点及其所有左树内容放入左树,然后在拆分右分支后,将其放入左树,并将其设置为左树缺少的右分支。然后将拆分右分支的右分支指定给右树


如何重写当前必须执行的操作?

您正在传递未初始化的指针。您需要将left和right设置为null ptr,直到它们实际有一个节点作为树根。可以将其视为从原始树中删除所有节点,然后从头开始构建两棵新树。您可以使用“添加”功能构建这两个新树。请尝试使
节点
类型本身超级安全。只需确保传递它不会使程序具有未定义的行为。当你有了
节点
,向它添加内容就差不多完成了。在这种情况下,您必须遵守。
void split(Node *T, int k, Node **L, Node **R)
{
    if(T == nullptr){

    }
    else{
        if(T->key <= k){
            Node *RightL;
            Node *RightR;
            Node *temp = T;
            split(T->right,k,&RightL,&RightR);
            temp->right = nullptr;
            temp->right = RightL;
            R = &RightR;
            L = &temp;
        }
        else{
            Node *LeftL;
            Node *LeftR;
            Node *temp = T;
            split(T->left,k,&LeftL,&LeftR);
            temp->left = nullptr;
            temp->left = LeftR;
            R = &temp;
            L = &LeftL;
        }
    }
}