【发布时间】:2017-08-09 07:50:45
【问题描述】:
我正在尝试为每个节点的数据添加 +1,但编号最小的节点除外。到目前为止,我的实现并不正确,我在递归调用中迷失了方向。我的代码在某些情况下添加不正确,并且在必要时未添加。我理解要找到最小的数据,我们去一直连接到左边的节点(8)在这种情况下,我是否缺少某些测试条件?
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;
}
【问题讨论】:
-
对不起,你的意思是添加我节点的结构吗?
-
是的节点声明和初始化
标签: c++ recursion binary-search-tree