[英]Finding Path to a Node - Tree with multiple children
我一直在挠头寻找解决这个问题的方法。 我对数据结构不是很好,每当我必须对树做任何事情时,我的大脑似乎都会融化一点。
假设我们有一个 Node():
Node(name: String, children: List<Node>?)
我们有一棵由这些节点组成的树:
var node6 = Node("6", null)
var node5 = Node("5", null)
var node4 = Node("4", null)
var node3 = Node("3", listOf(node5, node6))
var node2 = Node("2", null)
var node1 = Node("1", listOf(node2, node3, node4))
我可以采取什么方法来找到 node6 的路径(存储),而只有 root 可用?
非常感谢您提供的任何建议!
根据JayC667的指导解决方案:
fun recursiveCheck(
nodeA: Node,
nodePath: Stack<Node>,
nodeToFind: String
) : Boolean {
// Push param node to stack
nodePath.push(nodeA)
// Check param node
if(nodeA.name == nodeToFind) {
return true
}
if(nodeA.children != null) {
// Iterate over all children using recursive check
for(child in nodeA.children!!) {
// child found as param node
if(recursiveCheck(child, nodePath, nodeToFind)) return true
}
}
// Did not find node, popping off stack
nodePath.pop()
return false
}
简单的。 当然,如果节点在树中只存在一次并且可以从根访问。
使用 Stack 作为节点路径堆栈:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.