Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ///////////////// prva
- SLLNode<String> jazol = tree.root;
- for (i=0;i<N;i++) {
- String [] tmp = commands[i].split(" ");
- if(tmp[0].equals("CREATE")){
- SLLNode<String> temp = jazol.firstChild;
- if (temp == null || (temp.element.compareTo(tmp[1]) > 0)) {
- tree.addChild(jazol,tmp[1]);
- }
- else {
- SLLNode<String> ins = new SLLNode(tmp[1]);
- while (temp.sibling != null) {
- if (tmp[1].compareTo(temp.sibling.element) < 0) {
- ins.sibling = temp.sibling;
- temp.sibling = ins;
- ins.parent = jazol;
- break;
- }
- temp = temp.sibling;
- }
- ins.parent = jazol;
- temp.sibling = ins;
- }
- }
- else if(tmp[0].equals("OPEN")) {
- SLLNode<String> izmini = jazol.firstChild;
- while(izmini!=null) {
- if(izmini.element.equals(tmp[1])) {
- jazol = izmini;
- break;
- }
- izmini = izmini.sibling;
- }
- }
- else if(tmp[0].equals("DELETE")) {
- SLLNode<String> izmini = jazol.firstChild;
- while(izmini!=null) {
- if(izmini.element.equals(tmp[1])) {
- tree.remove(izmini);
- break;
- }
- izmini = izmini.sibling;
- }
- }
- else if(tmp[0].equals("BACK")) {
- jazol = jazol.parent;
- }
- else if(tmp[0].equals("PATH")) {
- String [] niza = new String[100];
- SLLNode<String> temp = jazol;
- int x=0;
- while(temp!=tree.root) {
- niza[x] = temp.element;
- x++;
- temp = temp.parent;
- }
- niza[x] = tree.root.element;
- for (int q=x;q>=0;q--) {
- System.out.print(niza[q] + "\\");
- }
- System.out.println();
- }
- else if(tmp[0].equals("PRINT")) {
- tree.printTree();
- }
- }
- //////////////////////////// treta
- import java.io.BufferedReader;
- import java.io.InputStreamReader;
- import java.util.StringTokenizer;
- class BNode<E> {
- public E info;
- public BNode<E> left;
- public BNode<E> right;
- static int LEFT = 1;
- static int RIGHT = 2;
- public BNode(E info) {
- this.info = info;
- left = null;
- right = null;
- }
- public BNode() {
- this.info = null;
- left = null;
- right = null;
- }
- public BNode(E info, BNode<E> left, BNode<E> right) {
- this.info = info;
- this.left = left;
- this.right = right;
- }
- }
- class BTree<E extends Comparable<E>> {
- public BNode<E> root;
- public BTree() {
- root = null;
- }
- public BTree(E info) {
- root = new BNode<E>(info);
- }
- public void makeRoot(E elem) {
- root = new BNode(elem);
- }
- public void makeRootNode(BNode<E> node) {
- root = node;
- }
- public BNode<E> addChild(BNode<E> node, int where, E elem) {
- BNode<E> tmp = new BNode<E>(elem);
- if (where == BNode.LEFT) {
- if (node.left != null) // veke postoi element
- return null;
- node.left = tmp;
- } else {
- if (node.right != null) // veke postoi element
- return null;
- node.right = tmp;
- }
- return tmp;
- }
- public BNode<E> addChildNode(BNode<E> node, int where, BNode<E> tmp) {
- if (where == BNode.LEFT) {
- if (node.left != null) // veke postoi element
- return null;
- node.left = tmp;
- } else {
- if (node.right != null) // veke postoi element
- return null;
- node.right = tmp;
- }
- return tmp;
- }
- public BNode<Integer> findTree(BNode<Integer> jazol,int baranaVrednost) {
- BNode<Integer> najden = null;
- if(jazol==null)
- return null;
- if(jazol.info==baranaVrednost)
- return jazol;
- if (jazol.left!=null)
- najden = findTree(jazol.left,baranaVrednost);
- if(najden==null)
- najden = findTree(jazol.right,baranaVrednost);
- return najden;
- }
- }
- public class BinaryTreeSum {
- public static void main(String[] args) throws Exception {
- int i, j, k;
- int index;
- String action;
- String line;
- BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
- StringTokenizer st;
- int N = Integer.parseInt(br.readLine());
- BNode<Integer> nodes[] = new BNode[N];
- BTree<Integer> tree = new BTree<Integer>();
- for (i=0;i<N;i++)
- nodes[i] = new BNode<Integer>();
- for (i = 0; i < N; i++) {
- line = br.readLine();
- st = new StringTokenizer(line);
- index = Integer.parseInt(st.nextToken());
- nodes[index].info = Integer.parseInt(st.nextToken());
- action = st.nextToken();
- if (action.equals("LEFT")) {
- tree.addChildNode(nodes[Integer.parseInt(st.nextToken())], BNode.LEFT, nodes[index]);
- } else if (action.equals("RIGHT")) {
- tree.addChildNode(nodes[Integer.parseInt(st.nextToken())], BNode.RIGHT, nodes[index]);
- } else {
- // this node is the root
- tree.makeRootNode(nodes[index]);
- }
- }
- int baranaVrednost=Integer.parseInt(br.readLine());
- br.close();
- // vasiot kod ovde
- int sum=0;
- BNode<Integer> novkoren = tree.findTree(tree.root, baranaVrednost);
- sum=recursiveTree(novkoren.left,baranaVrednost);
- System.out.print(sum + " ");
- sum=recursiveTree2(novkoren.right,baranaVrednost);
- System.out.print(sum);
- }
- public static int recursiveTree(BNode<Integer> jazol,int baranaVrednost) {
- if(jazol!=null) {
- if(jazol.info<baranaVrednost)
- return jazol.info + recursiveTree(jazol.left,baranaVrednost) + recursiveTree(jazol.right,baranaVrednost);
- else
- return recursiveTree(jazol.left,baranaVrednost) + recursiveTree(jazol.right,baranaVrednost);
- }
- else
- return 0;
- }
- public static int recursiveTree2(BNode<Integer> jazol,int baranaVrednost) {
- if(jazol!=null) {
- if(jazol.info>baranaVrednost)
- return jazol.info + recursiveTree2(jazol.left,baranaVrednost) + recursiveTree2(jazol.right,baranaVrednost);
- else
- return recursiveTree2(jazol.left,baranaVrednost) + recursiveTree2(jazol.right,baranaVrednost);
- }
- else
- return 0;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement