Untitled
unknown
java
a year ago
1.4 kB
5
Indexable
public static int calculateChanges(Node existingRoot, Node newRoot) {
// Build maps for both trees
Map<String, Node> existingMap = buildNodeMap(existingRoot);
Map<String, Node> newMap = buildNodeMap(newRoot);
// Track changes
List<String> added = new ArrayList<>();
List<String> deleted = new ArrayList<>();
List<String> updated = new ArrayList<>();
// Detect added and updated nodes
for (Map.Entry<String, Node> entry : newMap.entrySet()) {
String key = entry.getKey();
Node newNode = entry.getValue();
if (!existingMap.containsKey(key)) {
added.add(key);
} else {
Node existingNode = existingMap.get(key);
if (existingNode.value != newNode.value) {
updated.add(key);
}
}
}
// Detect deleted nodes
for (String key : existingMap.keySet()) {
if (!newMap.containsKey(key)) {
deleted.add(key);
}
}
private static void buildNodeMapHelper(Node node, Map<String, Node> nodeMap) {
if (node == null) return;
nodeMap.put(node.key, node);
for (Node child : node.children) {
buildNodeMapHelper(child, nodeMap);
}
}
}Editor is loading...
Leave a Comment