二叉树的递归析构函数?

时间:2014-10-11 03:08:13

标签: c++ function recursion

如何递归地为二叉树实现析构函数?

节点具有元素,指向左节点的指针和指向右节点的指针。   此外,您何时将左右节点指针设置为NULL?

3 个答案:

答案 0 :(得分:2)

析构函数会自动递归成员。你不应该手动编写析构函数。

template<class T>
struct Node
{
    T data;
    std::unique_ptr<Node<T>> left, right;
};

template<class T>
struct BinaryTree
{
    std::unique_ptr<Node<T>> root;
};

答案 1 :(得分:1)

记住o11c的答案,如果你选择不使用智能指针并且需要为裸指针指向的节点实现析构函数,请使用后序遍历。

http://en.wikipedia.org/wiki/Tree_traversal#Post-order

答案 2 :(得分:1)

  

如何递归地为二叉树实现析构函数?

像这样:

~BinaryTreeNode()
{
    delete _left;
    delete _right;
}
  

此外,您何时将左右节点指针设置为NULL?

从不在析构函数中。您可以在节点删除方法中执行其中一个或两个。

相关问题