1

我想知道是否可以在预购模式下释放整个二叉搜索树。我有这个功能:

void preorder_del(struct s_nodo ** tree)
{
     if (*tree != NULL)
        {
          free(*tree);
          preorder_del(&(*tree)->left);
          preorder_del(&(*tree)->right);
        }
}

我不认为这行得通,释放树的第一片叶子不会让我想起预购,对吧?

4

1 回答 1

2

您应该在本地记录leftright避免在free(*tree).

 if (*tree != NULL)
 {
      struct s_nodo *l = (*tree)->left;
      struct s_nodo *r = (*tree)->right;
      free(*tree);
      preorder_del(&l);
      preorder_del(&r);
 }
于 2014-02-07T14:52:54.983 回答