我最近开始使用python,正在使用python构建一个Family树。我的想法是树应该在两边生长,即老一代和年轻一代都可以添加到同一棵树上。
我尝试使用二叉树ADT和N-ary树ADT实现,但这不能很好地工作。任何人都可以建议我最适合构建该家谱的ADT,并指导我如何实现它?
答案 0 :(得分:2)
经过大量搜索,我发现Graph ADT更适合上述问题。由于一个族在所有方向上都有很大的跨度关系,因此使用图ADT是常规的。
这个想法是这样的,我认为这将有助于解决这个问题!
答案 1 :(得分:1)
如果您查看应用程序“longlines”,GEDCOM文件格式(不是XML版本)和其他家庭树软件,它会创建一个每人和每个家庭单元的唯一记录,然后使用这些记录的ID为家庭成员和儿童创造象征性的参考。
如果您查看此GEDCOM记录,它会识别ID为“I25”的INDIvidual,其为家庭ID F11的子女(FAMC)和F6和F12家庭的配偶(FAMS)。
0 @I25@ INDI
1 NAME Thomas Trask /Wetmore/ Sr
1 SEX M
1 BIRT
2 DATE 13 March 1866
2 PLAC St. Mary's Bay, Digby, Nova Scotia
2 SOUR Social Security application
1 NATU
2 NAME Thomas T. Wetmore
2 DATE 26 October 1888
2 PLAC Norwich, New London, Connecticut
2 AGE 22 years
2 COUR New London County Court of Common Pleas
2 SOUR court record from National Archives
1 OCCU Antiques Dealer
1 DEAT
2 NAME Thomas Trask Wetmore
2 DATE 17 February 1947
2 PLAC New London, New London, Connecticut
2 AGE 80 years, 11 months, 4 days
2 CAUS Heart Attack
2 SOUR New London Death Records
1 FAMC @F11@
1 FAMS @F6@
1 FAMS @F12@
人类关系远比在基本的树状数据结构中表现得复杂得多。