我正在尝试创建处理整个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;
}
答案 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_
的实现留给读者练习...