我有一个节点树,而不是二叉树。 节点有节点子节点;
class Node {
id : String
testable: Bool
children: [Node]
}
在这种情况下,孩子可以有孩子,依此类推。 我需要遍历树,如果节点的 testable 为真,我需要返回节点的 id。
如果孩子的 testable 是真的,我也需要返回孩子的 id。 如果我使用儿童/儿童/儿童循环,我可以获得结果,但它变得非常难看。 有没有好的干净的方法?
答案 0 :(得分:0)
你需要一个递归函数,像这样
var ids = [String]()
func testableIDs(node : Node, ids : inout [String]) {
if node.testable { ids.append( node.id) }
for child in node.children {
testableIDs(node: child, ids: &ids)
}
}
它分别调用自己迭代子项,使用 inout
参数收集 ID。