- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有一个名为 Device
的对象。 Device
可以有一个父 Device
。一个 Device
也可以有 n 个子 Devices
。
我有一个下拉列表,其中显示了所有可选择的设备
。我可以很容易地获取数据库中的所有 Devices
- db.Devices
。
层次结构可以无限深。
我需要获取所有不在树中给定Device
之上或之下的Devices
。本质上,我要求的是与给定的 Device
无关的 Devices
(既不是 parent /祖 parent /曾祖 parent /等,也不是 child /孙/曾孙/等)。我还需要从列表中排除给定的 Device
。
最好的方法是什么?我应该使用递归吗?
(我将 C# 和 Entity Framework 与 SQL Server 数据库结合使用,因此我可以使用 Linq To SQL 或使用模型本身。)
最佳答案
我的方法是首先获取设备 D
的所有兄弟:
P = parent of the device
sibs = {all children of P that are not D}
任何 d in sibs
的任何后代都与 D
无关。继续往上看:
G = grandparent of the device
sibs = sibs union {all children of G that are not P}
继续这种方式,集合 sibs
及其所有后代就是您所追求的集合。
在伪代码中:
D = device;
siblings = {};
while (D has parent) {
P = parent(D);
siblings = siblings union (children(P) \ D);
D = P;
}
return descendants(siblings);
关于c# - 查找不是父/祖 parent /等或子/孙/等的所有链接对象的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7357232/
file.xml 示例。 我更喜欢使用elementtree来解析。根节点获取为 tree=xml.etree.El
有什么好的方法可以直接将 SIGUSR 发送给孙子?例如。我有一些进程树: 0 / \ 1 2 \ 3 并且需要从0发送一个信号到3。 我
我正在使用lxml ,使用html库的模块。 如何获取包含具有某些特征的元素的元素? 例如: Welcome other Bye Bye another 如何选择 包含 Wel
我将直接切入,简短且具有描述性: C++、Windows API 我正在使用 CreateProcess 创建子进程以运行外部(命令行)应用程序。我已经建立了超时,如果到那时子进程还没有返回正常执行,
我有一个 XML 需要解析,这对我来说非常棘手。 1234 FOO ... 我想遍历此 XML 并在 b
我有一个父 div,单击它会显示一个子 div,再次单击父 div 将切换该子 div 并再次隐藏它。我在那个子 div 中有一个开关切换,它将在场景后面用作复选框。我的代码的问题是,当我点击那个开关
我有一个这样的数据路径 events -KntTJCVBtbrb79dHemC dateStamp: 1498747689858 admin: "rPxwIzE
我正在寻找一种将属性更改事件从孙子级传播到其父级的正确方法。假设我们有一些树结构,当其中一个叶子的某些属性发生变化时,应该通知这棵树的根。我想,一种方法是将属性更改监听器从节点添加到其子节点,然后将事
我有一个 Bash 脚本(Bash 3.2,Mac OS X 10.8)可以并行调用多个 Python 脚本,以便更好地利用多个内核。每个 Python 脚本都需要很长时间才能完成。 问题是,如果我在
我有一个名为 Device 的对象。 Device 可以有一个父 Device。一个 Device 也可以有 n 个子 Devices。 我有一个下拉列表,其中显示了所有可选择的设备。我可以很容易地获
我正在尝试使用此 cron 作业每隔一周运行一个脚本。 (/ect/crontab) 45 8 * * mon root expr `date +%U` % 2 >/dev/null || /home
我正在从事 Backbone/Marionette 项目。该项目实现了一种在从服务器加载数据后将数据缓存在本地内存中的方法。因此,可以在项目内随时随地访问数据。 这让我想知道在我的案例中填充数据以查看
我是一名优秀的程序员,十分优秀!