Showing posts with label queue. Show all posts
Showing posts with label queue. Show all posts

Sunday, 14 October 2018

Give an algorithm for printing the level order data in reverse order

For example, the output for the below tree should be: 4 5 6 7 2 3 1

public class PrintDataInReverseOrder {
    public static void main(String args[]) {
             Node rootNode = new Node("1");
             rootNode.left = new Node("2");
             rootNode.left.left = new Node("4");
             rootNode.left.right = new Node("5");
             rootNode.right = new Node("3");
             rootNode.right.right = new Node("7");
             rootNode.right.left = new Node("6");
           
             printInreverse(rootNode);
    }
   
    static void printInreverse(Node node) {
       
        Queue<Node> queue = new LinkedBlockingQueue<>();
        queue.add(node);
        Stack<String> stack = new Stack<>();
        while(!queue.isEmpty()) {
            Node node1 = queue.remove();
            stack.add(node1.value);
            if(null!=node1.right) {
                queue.add(node1.right);
            }
            if(null!=node1.left) {
                queue.add(node1.left);
            }
        }
       
        while(!stack.isEmpty()) {
            System.out.print(stack.pop());
        }
    }
}

class BinayTree{
    static class Node{
        String value;
        Node left;
        Node right;
       
        Node(String val){
            value = val;
            left = right = null;
        }
       
    }
   
}

output: 4567231

Calculate Size of binary tree Using Without Recusrion

public class CalculateSizeUsingWithoutRecusrion {
    public static void main(String args[]) {
             Node rootNode = new Node("4");
             rootNode.left = new Node("2");
             rootNode.left.left = new Node("1");
             rootNode.left.left.left = new Node("9");
             rootNode.left.right = new Node("3");
             rootNode.right = new Node("6");
             rootNode.right.right = new Node("7");
             rootNode.right.left = new Node("5");
             rootNode.right.right.right = new Node("8");
           
             System.out.println(calcSize(rootNode));
    }
   
    static int calcSize(Node node) {
        Queue<Node> queue = new LinkedBlockingQueue<>();
        queue.add(node);
        int count = 0;
        while(!queue.isEmpty()) {
            Node node1 = queue.remove();
            count= count+1;
            if(null!=node1.left) {
                queue.add(node1.left);
            }
            if(null!=node1.right) {
                queue.add(node1.right);
            }
        }
        return count;
    }
}



class BinayTree{
    static class Node{
        String value;
        Node left;
        Node right;
       
        Node(String val){
            value = val;
            left = right = null;
        }
       
    }
   
}


output:9

Saturday, 22 September 2018

algorithm for searching an element in binary tree without recursion java

public class SearchNodewithoutRecursion {
    public static void main(String args[]) {
        Node node = new Node(1);
        node.left = new Node(2);
        node.right = new Node(3);
        node.left.left = new Node(4);
        node.left.right = new Node(5);
        node.right.left = new Node(6);
        node.right.right = new Node(7);
        SearchNodewithoutRecursion searchANodeUsingRecusrsion = new SearchNodewithoutRecursion();
        int val = searchANodeUsingRecusrsion.findNode(node, 4);
        if(val==1)
            System.out.println("found");
        else
            System.out.println("not found");
    }
   
    public int findNode(Node node, int key) {
        if(null!=node) {
            Queue<Node> queue = new LinkedBlockingQueue<>();
            queue.add(node);
            while(!queue.isEmpty()) {
                Node temp = queue.remove();
                System.out.println(temp.value);
                if(temp.value == key) {
                    return 1;
                }
                if(null!=temp.left) {
                    queue.add(temp.left);
                }
                if(null!=temp.right) {
                    queue.add(temp.right);
                }
            }
        }
            return 0;
       
    }
}

class BinayTree{
    static class Node{
        String value;
        Node left;
        Node right;
       
        Node(String val){
            value = val;
            left = right = null;
        }
       
    }
   
}

links for Data Structure

  1) 𝐁𝐞𝐜𝐨𝐦𝐞 𝐌𝐚𝐬𝐭𝐞𝐫 𝐢𝐧 𝐋𝐢𝐧𝐤𝐞𝐝 𝐋𝐢𝐬𝐭:  https://lnkd.in/gXQux4zj 2) 𝐀𝐥𝐥 𝐭𝐲𝐩𝐞𝐬 𝐨𝐟 𝐓𝐫𝐞𝐞 𝐓𝐫𝐚𝐯𝐞𝐫𝐬𝐚𝐥𝐬...