Member 14052109 Ответов: 0

Ява.яз.исключение NullPointerException после перебалансировки вставка в Авл-дерево


вот мой код

в основном t это корень Т.вставка(вал , Т.корень);

public AvlNode insert (int value, AvlNode t) { 

	AvlNode newNode =new AvlNode(value);	
	// Find the node and it's parent.
	AvlNode current = root;
	AvlNode parent = null;
	boolean isLeft = false;
	
	if(root==null)
		root=newNode;
	else {

	while (current != null)
	{
	if (value > current.getValue())
	{
	parent = current;
	current = current.getRight();
	isLeft=false;
	}
	else if (value < current.getValue())
	{
	parent = current;
	current = current.getLeft();
	isLeft=true;
	}
	else
	break;
	}

   if(isLeft)
   parent.setLeft(newNode);
   else parent.setRight(newNode);
	}

	//check the balance 
	
	if(t.getLeft()!=null &&t.getRight()!=null)
	{
	if(getDepth(t.getLeft())-getDepth(t.getRight()) >= 2) {
		 if(value<t.getLeft().getValue())
			 singleRotateWithLeft( t,true ); 
		 else
			 doubleRotateWithLeft( t );
	}
	else if(getDepth(t.getRight())-getDepth(t.getLeft()) >= 2){
		 if(value>t.getRight().getValue())
		   singleRotateWithRight(t,true);
		 else
			 doubleRotateWithRight( t );
		 
	}
	}
		return newNode;


   private int getDepth( AvlNode st )   
{   

     if ( st == null )   
        return 0;   
     else    
     {   
       return 1+ Math.max( getDepth( st.left ), getDepth( st.right ) );
           
     }  
  
}


Что я уже пробовал:

я попытался справиться с этим исключением с помощью если(т.getLeft()!=нуль &амп;&амп;Т.окно getright()!=нуль)

Richard MacCutchan

Используйте свой отладчик, чтобы выяснить, где и почему возникает ошибка.

0 Ответов