【发布时间】:2021-04-06 23:00:20
【问题描述】:
我在 BST 中插入值并打印“left”如果该值应该插入左子树或“right” " 如果值应该插入右子树但是当我要打印时,打印了几个右/左,我该如何解决?我认为这是由于递归,但没有递归我无法解决。
BST 插入代码:
Node *insert(Node **root, int key)
{
if(*root == NULL)
{
Node *newNode = (Node*)malloc(sizeof(Node));
if(newNode == NULL)
return NULL;
newNode->key= key;
newNode->left = NULL;
newNode->right = NULL;
(*root) = newNode;
return newNode;
}
if(key < (*root)->key){
printf("left ");
return insert(&((*root)->left),key);
}
else{
printf("right ");
return insert((&(*root)->right),key);
}
}
示例: 插入值:25 - 20 - 36 - 10 - 22 - 30
【问题讨论】: