遍历引用只有每个节点的子节点的树

时间:2017-11-12 04:14:17

标签: c++ c++11

我有一个节点对象,每个节点都有一个对其子节点的向量的引用。如果它满足某些条件,我无法弄清楚如何遍历树并将“显示”布尔值设置为true。我在想我应该利用队列,但我不确定如何。

这是节点类

class Tag {
public:
enum TAGNAME {
    HTML, HEAD, BODY, TITLE, DIV, P, BR, SPAN, CONTENT
};

std::vector<Tag*> _children;
const std::string _name;
const std::string _id;
std::string _content;
const TAGNAME _tagname;
bool _displayed;

// Must create tags with the tag name and ID upfront.
Tag(const std::string& name, const std::string& id = "") : _name(name), _id(id), _content(""), _tagname(TAGNAME::CONTENT), _displayed(false) {}
Tag(const std::string& name, const TAGNAME& tagname, const std::string& id = "") : _name(name), _id(id), _content(""), _tagname(tagname), _displayed(false) {}
};

1 个答案:

答案 0 :(得分:0)

递归通常是遍历树的最简单方法。像这样:

void check_all(Tag& tag) {
    // ... check conditions and set _displayed
    for (Tag* child : tag._children) {
        check_all(*child);
    }
}