Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStreamReader;
- class BNode<E extends Comparable<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 printTreeInorder() {
- if (root != null) {
- printTreeInorder(root);
- }
- }
- private void printTreeInorder(BNode<E> t) {
- if (t != null) {
- printTreeInorder(t.left);
- System.out.println(t.info);
- printTreeInorder(t.right);
- }
- }
- public BNode<E> addNode(BNode<E> parent, int where, BNode<E> child)
- {
- if(where == BNode.LEFT)
- {
- if(parent.left == null)
- parent.left = child;
- else
- return null;
- }
- else
- {
- if(parent.right == null)
- parent.right = child;
- else
- return null;
- }
- return child;
- }
- int numNodes(BNode <E> node)
- {
- if (node == null)
- return 0;
- return 1 + numNodes(node.left) + numNodes(node.right);
- }
- public BNode <E> find (BNode <E> r,E el)
- {
- if(r.info == el)
- return r;
- BNode<E> result = new BNode<E>();
- if(r.left != null)
- result = find(r.left,el);
- if(result != null)
- return result;
- if(r.right != null)
- result = find(r.right,el);
- return result;
- }
- int dedoVnuk(BNode <E> r)
- {
- int result = 0;
- if(r.left != null)
- {
- if(r.left.left != null)
- ++result;
- if(r.left.right != null)
- ++result;
- result += dedoVnuk(r.left);
- }
- if(r.right != null)
- {
- if(r.right.left != null)
- ++result;
- if(r.right.right != null)
- ++result;
- result += dedoVnuk(r.right);
- }
- return result;
- }
- }
- public class BinaryTreev2 {
- public static void main(String[] args) throws IOException {
- BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
- int N = Integer.parseInt(br.readLine());
- BNode<String> nodes[] = new BNode[N];
- BTree<String> tree = new BTree();
- String [] niza = br.readLine().split(" ");
- nodes[Integer.parseInt(niza[0])] = new BNode<String> (niza[1]);
- tree.root = nodes[Integer.parseInt(niza[0])];
- for(int i = 1; i < N; i++)
- {
- niza = br.readLine().split(" ");
- nodes[Integer.parseInt(niza[0])] = new BNode <String> (niza[1]);
- if(niza[2].equals("LEFT"))
- tree.addNode(nodes[Integer.parseInt(niza[3])], BNode.LEFT, nodes[Integer.parseInt(niza[0])]);
- else
- tree.addNode(nodes[Integer.parseInt(niza[3])], BNode.RIGHT, nodes[Integer.parseInt(niza[0])]);
- }
- tree.printTreeInorder();
- System.out.println("Brojot na jazli vo drvoto e "+ tree.numNodes(tree.root));
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement