处理(免费)整个二叉搜索树

问题描述 投票:0回答:1

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

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

它应该打印类似于:left,right,#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;
  }
c binary-search-tree
1个回答
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_功能留作读者的练习......

© www.soinside.com 2019 - 2024. All rights reserved.