c/c++语言开发共享二叉搜索树获得0而不是null

我一直试图清除我的二叉树,当这样做时,我从下面的代码得到一个0而不是null。 当树引用NULL但未发生时,该树被定义为空。 在遍历树时可以看到错误。 如何更改它,以便在插入第二组数字时,0不显示?

#include  #include  typedef struct Node{ int value; struct Node * left; struct Node * right; } Node; Node * insert(Node * node, int value){ if(node == NULL){ Node *temp; temp = (Node *)malloc(sizeof(Node)); temp->value = value; temp->left = temp->right = NULL; return temp; } if(value >(node->value)){ node->right = insert(node->right,value); } else if(value value)){ node->left = insert(node->left,value); } return node; } void inorder(Node * node){ if(node == NULL) { return; } inorder(node->left); printf("%d ", node->value); inorder(node->right); } void preorder(Node * node){ if(node == NULL){ return; } printf("%d ",node->value); preorder(node->left); preorder(node->right); } void postorder(Node *node){ if(node == NULL){ return; } postorder(node->left); postorder(node->right); printf("%d ",node->value); } /* issue here is produces a 0 instead of null and that can be seen in the traversing :( */ void empty(Node * node) { if (node->left) node->left = NULL; if (node->right) node->right = NULL; if (node->value) node->value = NULL; node->value = NULL; } int main(){ Node * root = NULL; root = insert(root, 5); root = insert(root, -1); root = insert(root, 3); root = insert(root, -14); root = insert(root, 8); root = insert(root, 10); root = insert(root, 9); root = insert(root, 6); inorder(root); printf("n"); preorder(root); printf("n"); postorder(root); printf("n"); empty(root); root = insert(root, 1); root = insert(root, 2); root = insert(root, 3); inorder(root); printf("n"); preorder(root); printf("n"); postorder(root); printf("n"); } 

     void empty(Node ** node) { if(*node){ empty(&(*node)->left); empty(&(*node)->right); free(*node); *node = NULL; } } ... //at main empty(&root); 

    您为value分配NULL,但value int因此NULL ptr转换为int类型 – 并且此类转换的结果为数字零。

    顺便说一句,为指针变量赋值NULL会替换指针的值,但不会释放指针所指向的内存块。

      以上就是c/c++开发分享二叉搜索树获得0而不是null相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/522282.html

      (0)
      上一篇 2020年12月9日
      下一篇 2020年12月9日

      精彩推荐