2016-05-16 1 views
1

Недавно я начал изучать структуры данных и алгоритм. Я создаю двоичное дерево, которое добавляет узлы только слева от дерева. Как я могу создать таким образом, что он должен добавить узлы на обеих сторонах корневого узла и выглядеть следующим образом:Двоичное дерево, добавляющее узлы только влево. Как я могу заставить его работать как слева, так и справа от корневого узла?

  2    
     /\  
    / \  
    / \  
    /  \  
    7  5  
    /\ /\ 
/ \ / \ 
    2 6 3 6 

Вот код, который я написал:

public class BinaryTreeOperations { 

    BinaryTreeNode root; 

    //let's start with an empty binary tree 
    public BinaryTreeOperations(){ 
     root = null; 
    } 

    //let's initialize our tree with a root node 
    public BinaryTreeOperations(BinaryTreeNode rootNode){ 
     this.root = rootNode; 
    } 


    public void insert(int data) 
    { 
     root = insertNode(root, data); 
    } 




    private BinaryTreeNode insertNode(BinaryTreeNode node, int data){ 


     //To check if the root is null then create a root node with no children 
     if (node == null) { 

      System.out.println("inserting root node"+ data+"\n"); 
      node = new BinaryTreeNode(data); 
     } 
     else { 
      if(node.getRightChild() == null){ 
       System.out.println("inserting right child :"+data+"\n"); 
       node.rightChild=insertNode(node.rightChild, data); 
      } 
      else { 
       System.out.println("inserting left child :"+data+"\n"); 
       node.leftChild = insertNode(node.leftChild, data); 
      } 
     } 
     return node; 
    } 

    public int countNodes() { 
     return countNodes(root); 
    } 

    private int countNodes(BinaryTreeNode r) { 
     if (r == null) 
      return 0; 
     else 
     { 
      int count = 1; 
      count += countNodes(r.getLeftChild()); 
      count += countNodes(r.getRightChild()); 
      return count; 
     } 
    } 
} 

Main Class :

public class BinaryTreeMain { 
    public static void main(String args[]){ 

     BinaryTreeOperations binaryTreeOperations = new BinaryTreeOperations(); 
     binaryTreeOperations.insert(12); 
     binaryTreeOperations.insert(17); 
     binaryTreeOperations.insert(11); 
     binaryTreeOperations.insert(21); 
     binaryTreeOperations.insert(27); 

     System.out.println("Total number of nodes :" + binaryTreeOperations.countNodes()); 

    } 
} 
+0

Какой выход? Можете ли вы показать нам свой главный, если таковой имеется? –

+0

Обновлен вопрос классом с основной функцией. –

+0

Вы сами реализовали BinaryTreeNode? –

ответ

1

вы можете, например, хранить дополнительную информацию о каждом узле, как логические, который дает направление, в котором необходимо вставить, и вы включите его после установки. Для этого требуется всего несколько строк больше, чем вы уже делали.

 Смежные вопросы

  • Нет связанных вопросов^_^