我已經創建了下面的類(簡體):遞歸確定子結構
public class ClassItem{
//Sub-Groups
public List<ClassItem> Children { get; set; }
public Int64 MaxChilds { get; set; }
//Properties
.........
}
現在我試圖讓每個分支中最大的兒童用遞歸方法上水平。在一定程度上闡明這一點,說我有以下結構:
- ClassItem 1 (5)
- ClassItem 1.1 (1)
- ClassItem 1.1.1 (0)
- ClassItem 1.2 (0)
- ClassItem 1.3 (3)
- ClassItem 1.3.1 (0)
- ClassItem 1.3.2 (0)
- ClassItem 1.3.3 (2)
- ClassItem 1.3.3.1 (0)
- ClassItem 1.3.3.2 (0)
- ClassItem 1.4 (5)
- ClassItem 1.4.1 (0)
- ClassItem 1.4.2 (0)
- ClassItem 1.4.3 (0)
- ClassItem 1.4.4 (0)
- ClassItem 1.4.5 (0)
括號內的數字是最大的;兒童人數或其子女在其任何分支機構內的子女人數。
我嘗試了很多東西,但它似乎沒有正常工作。我現在有以下幾種:
private void FindMaxChilds(ClassItem classItem, ref Int64 horizontalMaxLevels) {
//Count horizontal for each child
if (horizontalMaxLevels < classItem.Children.Count) {
horizontalMaxLevels = classItem.Children.Count;
}
foreach (ClassItem cci in classItem.Children) {
FindMaxLevels(cci, ref horizontalMaxLevels);
}
classItem.MaxChilds = horizontalMaxLevels;
}
有人可以幫助我去那裏嗎?
它不應該是'ClassItem 1(11)'?其中1 + 3 + 2 + 5的總和。 –
不是,任何分支的最大兒童數爲5: 1.1有1,1.2有0,1.3有3,1.4有5和1有4有4兒童。 (我不是指最深層次上的所有孩子!) – Sliver2009
那麼爲什麼是1.4(5)呢?因爲所有1.4的孩子都有0個孩子。如果我理解正確,它應該是1.4(0)。 –