import java.util.*;
import java.io.*;
  
class GFG {
    
    
    public static class Node {
        int data;
        Node left;
        Node right;
        Node(int data, Node left, Node right)
        {
            this.data = data;
            this.left = left;
            this.right = right;
        }
    }
    
    
    
    public static void display(Node node, List<Integer> al)
    {
        
        if (node == null) {
            return;
        }
       
       
        if (node.left != null) {
            al.add(node.left.data);
        }
       
        else {
            al.add(null);
        }
         
       
       
       
        if (node.right != null) {
            al.add(node.right.data);
        }
       
        else {
            al.add(null);
        }
        
        
        
        
        display(node.left, al);
        display(node.right, al);
    }
    
    public static void main(String[] args)
    {
        
        int n = 7;
         
        
        List<Node> list = allPossibleFBT(n);
        
       
        for (Node root: list) {
            List<Integer> al = new ArrayList<>();
            al.add(root.data);
            display(root, al);
            System.out.println(al);
        }
    }
      
    static HashMap<Integer, List<Node> > hm = new HashMap<>();
    public static List<Node> allPossibleFBT(int n)
    {
      
        if (!hm.containsKey(n)) {
              
            
            List<Node> list = new LinkedList<>();
            
            
            
            if (n == 1) {
               
                list.add(new Node(0, null, null));
            }
            
            
            
            else if (n % 2 == 1) {
                
                
                
                for (int x = 0; x < n; x++) {
                    
                   
                   
                    int y = n - 1 - x;
                    
                  
                 
                    for (Node left: allPossibleFBT(x)) {
                        
                      
                      
                      
                        for (Node right: allPossibleFBT(y)) {
                            
                           
                            Node node = new Node(0, null, null);
                            
                           
                            node.left = left;
                            
                           
                            node.right = right;
                            
                           
                            list.add(node);
                        }
                    }
                }
            }
            
          
            hm.put(n, list);
        }
        return hm.get(n);
    }
}
Original page link
Best Cool Tech Gadgets
Top favorite technology gadgets
 
 
 
 
0 comments:
Post a Comment