我有一个节点对象,每个节点都有一个对其子节点的向量的引用。如果它满足某些条件,我无法弄清楚如何遍历树并将“显示”布尔值设置为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) {}
};
答案 0 :(得分:0)
递归通常是遍历树的最简单方法。像这样:
void check_all(Tag& tag) {
// ... check conditions and set _displayed
for (Tag* child : tag._children) {
check_all(*child);
}
}