Categories:
.NET (357)
C (330)
C++ (183)
CSS (84)
DBA (2)
General (7)
HTML (4)
Java (574)
JavaScript (106)
JSP (66)
Oracle (114)
Perl (46)
Perl (1)
PHP (1)
PL/SQL (1)
RSS (51)
Software QA (13)
SQL Server (1)
Windows (1)
XHTML (173)
Other Resources:
Calculating Total Weight of Subtree
Subject: Calculating Total Weight of Subtree --- Category: ,1, --- Question
Can you write a computer code for the following problem:
Given a text file with 3 comma-delimited columns of all integers: 'id', 'parent' and 'weight'. Each line represents a node identified by 'id'. 'parent' refers to 'id' of another node. Print out, for each node, the total weight of a subtree below this node.
✍: Guest
Here is the solution in Java:
import java.io.*;
import java.util.*;
public class PrintWeight {
public static void main(String[] a) {
Hashtable<String, String> parentMap = new Hashtable<String, String>();
Hashtable<String, Long> weightMap = new Hashtable<String, Long>();
try {
BufferedReader input = new BufferedReader(new FileReader(a[0]));
String line = null;
while ( (line = input.readLine()) != null ) {
String[] cols = line.split(",");
String id = cols[0].trim();
String parent = cols[1].trim();
long weight = Long.parseLong(cols[2]);
Long totalWeight = weightMap.get(id);
if (totalWeight==null) {
weightMap.put(id, weight);
} else {
weightMap.put(id, totalWeight.longValue()+weight);
}
parentMap.put(id, parent);
weight = weightMap.get(id).longValue();
while ( parent!=null && parent.length()>0 ) {
totalWeight = weightMap.get(parent);
if (totalWeight==null) {
weightMap.put(parent, weight);
} else {
weightMap.put(parent, totalWeight.longValue()+weight);
}
parent = parentMap.get(parent);
}
}
input.close();
} catch (Exception e) {
e.printStackTrace();
}
Enumeration<String> nodes = weightMap.keys();
while(nodes.hasMoreElements()) {
String id = nodes.nextElement();
long weight = weightMap.get(id).longValue();
System.out.println(id+", "+weight);
}
}
}
2014-01-02, 3517👍, 0💬
Popular Posts:
What is the main difference between a Vector and an ArrayList? Java Vector class is internally synch...
What CLASSPATH Settings Are Needed to Run JUnit? It doesn't matter if you run your JUnit tests from ...
What are the types of variables x, y, y and u defined in the following code? #define Atype int* type...
. How can a servlet refresh automatically if some new data has entered the database? You can use a c...
What is the FP per day in your current company?