处置(免费)整个二进制搜索树

时间:2018-10-12 21:37:14

标签: c binary-search-tree

我正在尝试创建处理整个BST的迭代方法。

通过函数insert_nodes插入节点后,我没有得到预期的输出。

它应该打印以下内容:左,右,#nr #nr #nr代表数字5,3,4

我知道以递归方式进行操作很容易,但是我想以迭代方式进行。我对指针和free感到很困惑,因为我必须释放所有节点。

我感谢任何类型的帮助和解释。

struct node
{
  int value;
  node *left;
  node *right;
}node;

void disposeBST(*node root)

if (root == NULL)
    return;

  node *ptr = root;

  while (ptr != NULL )
  {
     if(ptr->right != NULL){
      printf("left");
      ptr= ptr->left;

    }
  if(ptr->right != NULL)
    {
      printf("right");
      ptr =ptr->right ;

    }
  }
  printf("#nr");
  free(root);
  ptr = 0;
  }

1 个答案:

答案 0 :(得分:0)

执行此操作的基本方法:

disposeBST(node *root) {
    struct stack stack;
    stack_init(&stack);
    if (root) stack_push(&stack, root);
    while (!stack_empty(&stack)) {
        node *ptr = stack_pop(&stack);
        if (ptr->left) stack_push(&stack, ptr->left);
        if (ptr->right) stack_push(&stack, ptr->right);
        free(ptr);
    }
    stack_destroy(&stack);
}

struct stack及其相关stack_的实现留给读者练习...