public static int labelNodes(Node root, int level){
if(root.left == null && root.right == null){
root.level = level;
return level;
}
int leftLabel = -1;
if(root.left != null){
leftLabel = labelNodes(root.left, level+1);
}
int rightLabel =-1;
if(root.right!=null){
rightLabel = labelNodes(root.right, level+1);
}
root.level = Math.max(leftLabel, rightLabel);
return root.level;
}
public static void remNodes(Node c, Node p, int k){
if(c == null) return;
Node parent = p;
Node cur = c;
if(cur.level < k){
if(parent!=null){
if(parent.left == cur) parent.left = null;
else{
parent.right = null;
}
}else{
cur = null;
}
}else{
remNodes(cur.left, cur, k);
remNodes(cur.right, cur, k);
}
}