javascript - 对自引用父/子列表的子值求和并将父值设置为总和
问题描述
我有一个产品实体列表,这些实体是自引用的,可以无限级别。例如:
Name: Product 1
Parent: null
Value: null
Name: Product 2
Parent: "Product 1"
Value: 20
Name: Product 3
Parent: "Product 2"
Value: null
Name: Product 4
Parent: "Product 3"
Value: 40
Name: Product 5
Parent: "Product 4"
Value: 50
Name: Product 6
Parent: null
Value: null
Name: Product 7
Parent "Product 6"
Value: 30
我正在尝试将具有空值的任何实体设置为具有该实体下所有实体的总和(如果有任何值)。在上面的示例中,我最终会得到:
Name: Product 1
Parent: null
Value: 110
Name: Product 2
Parent: "Product 1"
Value: 20
Name: Product 3
Parent: "Product 2"
Value: 90
Name: Product 4
Parent: "Product 3"
Value: 40
Name: Product 5
Parent: "Product 4"
Value: 50
Name: Product 6
Parent: null
Value: 30
Name: Product 7
Parent "Product 6"
Value: 30
我尝试做一些预处理,将实体存储在哈希图中,但没有成功。
解决方案
将这个平面层次结构转换为真正的层次结构并递归。
public class Node {
public string Name {get; set;}
public int Value {get; set;}
public List<Node> Children = new List<Children>();
}
public int Sum(Node node) {
int sum = 0;
foreach(var childnode in node.Children) {
sum+= Sum(childnode);
}
sum+= node.Value
return sum;
}
//store all nodes
var Nodes = new List<Node>();
foreach(var node in Nodes) {
if (node.Value = 0) {
node.Value = Sum(node);
}
}
推荐阅读
- plot - 我们如何一起使用 Dask 和 Datashader?
- asp.net-core - 如何将 Aurelia.js 网站分成两部分
- java - 在没有调试器的情况下控制 java 程序的执行
- c# - 获取 System.Data.OleDb.OleDbException:“没有为一个或多个必需参数提供值。” 使用 c# 从 Excel 工作表中读取数据时
- asp.net - 在 AspNet MVC 中显示用户全名而不是用户电子邮件
- mysql - 如何从 SQL 中的子查询中选择最大值以显示结果
- android - 在 onResume 等非活动类上获取回调
- db2 - 当我从 RPG 程序调用 JAVA 类时,我遇到错误说“java.lang.NoClassDefFoundError
- java - 删除标题文本 aspose 单元格
- javascript - 如何在不重新加载的情况下更新页面上的信息