gpt4 book ai didi

c# - 使用递归过滤树

转载 作者:行者123 更新时间:2023-12-01 21:12:52 25 4
gpt4 key购买 nike

我有一棵树,如下所示。

A1  B1    B2       A2      A3       B3        A4          A5  C1    C2      C3        A6

我想过滤此返回

A1  A2    A3     A4          A5  A6

基本思想是只返回A节点。我遇到的困难是在 A2 的情况下,我想放弃 B1 并将 A2 拉到 B2 的水平

我正在使用 c# 树由节点列表组成

最佳答案

您想要深度搜索(递归)并消除不是 A 的节点,对吧?

我会在返回时删除节点,将子节点插入到父节点(在您当前所在节点的位置),然后每当您位于非 A 节点时删除此节点。

类似这样的东西(简化的伪代码,在迭代节点集合时必须小心更改节点集合等):

void FilterNode(Node node) {
foreach (Node child in node.Children) {
FilterNode(child);
}
if (node.Type != NodeType.A) {
foreach (Node child in node.Children) {
node.Parent.InsertAfter(node, child);
}
node.Parent.RemoveNode(node);
}
}

关于c# - 使用递归过滤树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4413913/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com