如何在c ++中有效地返回树中的节点列表

时间:2013-07-25 17:22:50

标签: c++ list tree binary-tree std

这是我的Node类的简化版本:

class Node {
public:
    Node();

    // indicators of whether the node is a top or bottom node
    bool Top;
    bool Bot;

    // pointers for tree structure
    Node *Parent;
    Node *LeftC;
    Node *RightC;

    std::list<Node*> getNodesList();
};

我想要的是能够按特定顺序获取树中节点的指针列表。我尝试了以下代码来执行此操作:

std::list<Node*> Node::getNodesList(){
    if (Bot) return (std::list<Node*>(1,this));
    else {
        std::list<Node*> temp (1,this);
        temp.splice(temp.end(), LeftC->getNodesVector()); // Combine with left childrens
        temp.splice(temp.end(), RightC->getNodesVector()); // Combine with right childrens
        return temp;
    }
}

拼接功能不起作用并给我一个错误。

所以我的问题是:

  • 为什么拼接功能不能合并列表?
  • 是否有更有效的方法可以返回指向节点的指针列表?

1 个答案:

答案 0 :(得分:1)

由于我不知道您的确切错误,只需快速浏览一下您的代码就会告诉我您的Node类可能不知道getNodesVector()是什么,因为它没有定义你的班级。