Мне нужно сделать Complete Binary Search Tree
.Если у меня есть метод, который выглядит следующим образом:
public void createCompleteTree(Node n, int i)
И я, например, использую число 9 в качестве значения i
, что мне делать, чтобы найти корень, который создаст полное дерево?
Если я использую 9 в качестве значения, цифры будут 1,2,3,4,5,6,7,8,9
.Для полного дерева двоичного поиска корень должен быть 6, как показано ниже:
Как я могу создать метод, который знает это?Он должен работать с любым видом числа, поэтому, если я хочу использовать число 14. Он должен быть в состоянии.
Пока что единственный код, который у меня есть, это метод вставки, который просто проверяет, вставляется ли числобольше (идет вправо) или меньше (идет влево), чем узел, в котором мы сейчас находимся.x
- это число для вставки, t
- текущий узел, в котором мы находимся в дереве:
private BinaryNode<AnyType> insert( AnyType x, BinaryNode<AnyType> t )
{
if( t == null )
return new BinaryNode<>( x, null, null );
int compareResult = x.compareTo( t.element );
if( compareResult < 0 )
t.left = insert( x, t.left );
else if( compareResult > 0 )
t.right = insert( x, t.right );
else
; // Duplicate; do nothing
return t;
}