2 回答
TA贡献1829条经验 获得超6个赞
它确实是递归的。问题在于,只有两个节点处于同一级别时,简单的递归比较才会起作用。
// Same level compare
int compareSameLevel(Item item) {
int c = 0;
if (this.getParent != null) {
c = compare(this.getParent(), item.getParent());
}
return (c != 0) ? c : getName().compare(item.getName());
}
但是您可以调整级别以找到一个共同的级别并假设孩子们追随父母:
// Compare on any level
int compare(Item item) {
Item thisItem = this;
int thisLevel = thisItem.level();
int itemLevel = item.level();
for (int i = thisLevel; i > itemLevel; i--) {
thisItem = thisItem.getParent();
}
for (int j = itemLevel; j > thisLevel; j--) {
item = item.getParent();
}
int c = compareSameLevel(thisItem, item);
return c != 0 ? c : (thisLevel > itemLevel ? -1 : 1);
}
这只是给你一个想法。它未经测试或编译。
TA贡献1874条经验 获得超12个赞
伪代码:试试这样
private static void printChildElements(List<Object> childNodes) {
for(Object childNode : childNodes) {
List<Object > childElements = childNode .....;
if(childElements.size() > 0) {
printChildElements( childElements);
}
}
添加回答
举报
