In: Computer Science
import java.util.Stack;
import java.util.ArrayList;
import java.util.Scanner;
class TreeNode{
int data;
ArrayList<TreeNode> children = new ArrayList<>();
TreeNode parent = null;
public TreeNode(int d){
data = d;
}
public TreeNode addChild(int d){
TreeNode n = new TreeNode(d);
n.setParent(this);
children.add(n);
return n;
}
public ArrayList<TreeNode> getChildren(){
return children;
}
public void setParent(TreeNode p){
parent = p;
}
public TreeNode getParent(){
return parent;
}
}
class Main {
public static void main(String[] args)
{
Scanner scan = new
Scanner(System.in);
int num;
//Create a tree
TreeNode root = new
TreeNode(scan.nextInt());
TreeNode node1 = root.addChild(scan.nextInt());
TreeNode node11 = node1.addChild(scan.nextInt());
TreeNode node12 = node1.addChild(scan.nextInt());
TreeNode node2 = root.addChild(scan.nextInt());
TreeNode node21 = node2.addChild(scan.nextInt());
TreeNode node22 = node2.addChild(scan.nextInt());
TreeNode node211 =
node21.addChild(scan.nextInt());
int newK = scan.nextInt();
System.out.println(""+largerK(root,
newK));
}
public static int largerK(TreeNode n, int k) {
//goal: Find the number of elements
greater than k in the tree rooted in n
//Example: if the elements in the
tree are: 10, 20, 30, 40, 50, and k=25, the method should return:
3
}
import java.util.Stack; import java.util.ArrayList; import java.util.Scanner; class TreeNode{ int data; ArrayList<TreeNode> children = new ArrayList<>(); TreeNode parent = null; public TreeNode(int d){ data = d; } public TreeNode addChild(int d){ TreeNode n = new TreeNode(d); n.setParent(this); children.add(n); return n; } public ArrayList<TreeNode> getChildren(){ return children; } public void setParent(TreeNode p){ parent = p; } public TreeNode getParent(){ return parent; } }
class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); int num; //Create a tree TreeNode root = new TreeNode(scan.nextInt()); TreeNode node1 = root.addChild(scan.nextInt()); TreeNode node11 = node1.addChild(scan.nextInt()); TreeNode node12 = node1.addChild(scan.nextInt()); TreeNode node2 = root.addChild(scan.nextInt()); TreeNode node21 = node2.addChild(scan.nextInt()); TreeNode node22 = node2.addChild(scan.nextInt()); TreeNode node211 = node21.addChild(scan.nextInt()); int newK = scan.nextInt(); int count=largerK(root,newK); if(root.data>newK)//check if the root data is greater that k then increment count by 1 System.out.println("" + (count+1)); else System.out.println(""+ count); } public static int largerK(TreeNode n, int k) { //goal: Find the number of elements greater than k in the tree rooted in n //Example: if the elements in the tree are: 10, 20, 30, 40, 50, and k=25, the method should return: 3 int count=0; ArrayList<TreeNode> children=n.getChildren(); //Traversing level wise and checking the values of children of node if it is greater than k and increment count for(int i=0;i<children.size();i++){ if(children.get(i).data>k){ count++; } } //Recursively calling same function for each child to get and find the values of nodes which are greater than k for(int i=0;i<children.size();i++){ count+=largerK(children.get(i),k); } return count; } }