Недавно я начал изучать структуры данных и алгоритм. Я создаю двоичное дерево, которое добавляет узлы только слева от дерева. Как я могу создать таким образом, что он должен добавить узлы на обеих сторонах корневого узла и выглядеть следующим образом:Двоичное дерево, добавляющее узлы только влево. Как я могу заставить его работать как слева, так и справа от корневого узла?
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());
}
}
Какой выход? Можете ли вы показать нам свой главный, если таковой имеется? –
Обновлен вопрос классом с основной функцией. –
Вы сами реализовали BinaryTreeNode? –