drva 5
import java.util.HashMap;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scn = new Scanner(System.in);
int n = Integer.parseInt(scn.next());
int q = Integer.parseInt(scn.next());
BTree<String> tree = new BTree<>();
HashMap<String, BNode<String>> map = new HashMap<>();
for(int i = 0; i<q+n; i++){
String command = scn.next();
if(command.equals("root")){
String name = scn.next();
tree.makeRoot(name);
map.put(name,tree.root);
}
else if(command.equals("add")){
String parent = scn.next();
String child = scn.next();
String where = scn.next();
BNode<String> parentNode = map.get(parent);
BNode<String> childNode = new BNode<String>(child);
if(where.equals("LEFT")) parentNode.left = childNode;
else parentNode.right=childNode;
map.put(child, childNode);
}
else if(command.equals("ask")){
String node = scn.next();
System.out.println(degreeSubtree(map.get(node)));
}
}
}
public static int degreeSubtree(BNode<String> node){
if(node==null || (node.left==null && node.right == null)) return 0;
if(node.left == null || node.right==null) return 1 + degreeSubtree(node.left) + degreeSubtree(node.right);
return 2 + degreeSubtree(node.left)+ degreeSubtree(node.right);
}
}
Editor is loading...
Leave a Comment