最小の番号を持つノードを除くすべてのノードのデータに+1を追加しようとしています。これまでのところ、私の実装は正しく行われていません、私は再帰呼び出しで失われています。私のコードは、状況によっては正しく追加されず、必要なときに追加されません。私は最小のデータを見つけ出すことを理解しています。この場合、ノード8に接続されたノードに行きますが、特定のテスト条件がありませんか?SMALLESTデータを持つノード以外のBSTのすべてのノードに再帰的に1を加算します。
Given a data set: 8, 14, 24, 29, 31, 35, 46, 58, 62,85, 95
Expected results: 8, 15, 25, 30, 32, 36, 47, 59, 63, 86, 96
Actual results: 9, 14, 25, 29, 32, 36, 46, 59, 63, 85, 96
struct node
{
node * left;
node * right;
int data;
};
int add1(node * root)
{
if(!root) return 0;
add1(root->left); //go left
if(!root->left) { //if left is NULL
if(root->right) //check if there is a right child
add1(root->right); //go to that node
else
return 0;
}
root->data += 1; //add 1 to node
add1(root->right); //go right
return 1;
}
int main()
{
node * root = NULL;
build(root); //inserts data set into our tree
display(root);
add1(root);
display(root);
return 0;
}
私のノードの構造体を追加しましたか? –
yepノードの宣言と初期化 – em2er