I'm attempting to write a function to balance a red-black tree after inserting nodes into it, but I'm getting a null pointer exception. On line 156, when I assign temp to node.parent.parent.right, temp is null, meaning node.parent.parent.right is null. I'm not sure why. Would anyone be able to look at my code and try to help me figure out why this issue is occurring?
//Insert Fix function to balance tree after insertion
 public void InsertFix(Node<T,U> node)
 {
     Node<T,U> temp = node.parent.parent;
     if(node.parent == null)
     {
         System.out.println("parent is null");
     }
     while(node.parent.color == 1)
     {
         if(node.parent.equals(node.parent.parent.right))
        {
            temp = node.parent.parent.left; //uncle
            
             
            if(temp.color == 1) //if red parent has red child
            {
                temp.color = 0; //change color of parent
                node.parent.color = 0; //change color of uncle
                node.parent.parent.color = 1; //change color of g-parent
                node= node.parent.parent;
            }
            else 
            {
                if(node.equals(node.parent.left))
                {
                    node = node.parent;
                     
                    //Perform a right rotation
                    RightRotation(node);
                }
                
                node.parent.color = 0;
                node.parent.parent.color = 1;
                 
                //Perform a left rotation
                LeftRotation(node.parent.parent);
            }
         }
         
        else
        {
          temp = node.parent.parent.right; //uncle THIS VALUE IS NULL
          System.out.println(node.parent.parent.right);
          if(temp.color == 1)
          {
              temp.color = 0;
              node.parent.color = 0;
              node.parent.parent.color = 1;
              node = node.parent.parent;
          }
          
          else
          {
              if(node.equals(node.parent.right))
              {
                  node = node.parent;
                  LeftRotation(node);
              }
              
              node.parent.color = 0;
              node.parent.parent.color = 1;
              RightRotation(node.parent.parent);
          }
             
        }
        
        if (node == root)
        {
            break;
        }
     }
     
     root.color = 0;
 }
 
    