arrays - 从特定节点递归获取父节点
问题描述
我需要创建一个函数,从树结构中的特定节点返回所有父节点。
这是一个结构示例:
struct Node
{
var name: String
var id: Int
var parentId: Int?
var children: [Node]
init(name: String, id: Int, children: [Node], parentId: Int?)
{
self.name = name
self.id = id
self.children = children
self.parentId = parentId
}
}
这将是一个节点数组。
Array(
Node("A1", 1, [
Node ("A11", 11, [
Node("A111", 111, []),
Node("A112", 112, [])
]
)]),
Node("A2", 2, [
Node ("A21", 21, [
Node("A211", 211, []),
Node("A212", 212, [])
]
)]),
)
)
如果我选择 Note "112" 我应该得到一个这样的数组:
[Node("A1", 1, [...]), Node ("A11", 11, [...]]
任何想法我怎么能做到这一点?
这是一个可测试的示例:
let nodeA111 = Node(name: "A111", id: 111, children: [], parentId: 11)
let nodeA112 = Node(name: "A112", id: 112, children: [], parentId: 11)
let nodeA211 = Node(name: "A211", id: 211, children: [], parentId: 21)
let nodeA212 = Node(name: "A212", id: 212, children: [], parentId: 21)
let nodeA11 = Node(name: "A11", id: 11, children: [nodeA111, nodeA112], parentId: 1)
let nodeA21 = Node(name: "A21", id: 21, children: [nodeA211, nodeA212], parentId: 2)
let nodeA1 = Node(name: "A1", id: 1, children: [nodeA11], parentId: nil)
let nodeA2 = Node(name: "A2", id: 2, children: [nodeA21], parentId: nil)
let nodes: [Node] = [nodeA1, nodeA2]
// This is the function I want to do
func getParentNodes(forNode node: Node) -> [Node]
{
return []
}
我很感激帮助。
解决方案
推荐阅读
- python-3.x - 如何将整数数组保存到将数字显示为整数的文件中
- swift - 通过 UITableViewCell 上的自定义按钮更新 Realm
- python - 如何做到这一点,以便我可以将文件发送到服务器,然后让我的 python 脚本对其进行操作,然后将其发回?
- java - 计划任务中发生意外错误。java.lang.OutOfMemoryError:Java 堆空间
- c++ - 不支持扩展“GL_ARB_shading_language_420pack”,如何在 QT 中加载此扩展?
- cassandra - 在 Cassandra 中,如何将数据保存在列名中,同时将列值留空?
- hyperledger-fabric - Hyperledger 无法更新通道
- android - Android Studio XML 格式不填满屏幕
- markdown - 在 github 页面的降价表中
- python - POST 方法在被请求时不断发送 400 错误