释放树中的所有元素

时间:2016-10-25 17:27:44

标签: c

我试图写一个递归来释放树中的所有元素。数据结构是一个带有info的结构,一个指向left子节点的指针和一个指向兄弟的指针。

如何释放树中的所有节点?我试过了下订单的方法,但是我不能把它弄好了。谢谢你

树不是二进制

1 个答案:

答案 0 :(得分:0)

有两种方法可以递归或迭代地执行此操作。

递归方法是最简单的代码。您编写了一个“自由节点”函数,用于检查节点是否有任何后代或兄弟节点,并在每个节点上调用“空闲节点”,然后释放它所调用的节点。在根节点上执行此“自由节点”操作将释放整个树。

迭代方法做同样的事情,但保留一个节点列表来释放。这是迭代方法的草图:

  1. 创建指向仅包含根节点的节点的指针列表。
  2. 获取列表头部的节点,添加其所有兄弟节点并将子节点指向节点列表,然后释放该节点并将其从列表中删除。
  3. 如果列表为空,请停止,您已完成。
  4. 转到第2步。