Java Balancing Tree, I have no idea how to do this can some one help me PLEASE

(14pts) Below is the diagram to rebalance an AVL tree when the AVL condition is violated at the node P because of an insertion to the right of P's left child.

Complete the method doubleWithLeftChild(Node p) below that (1) rebalances the tree at P, (2) adjusts the heights of nodes whose children have changed, and (3) returns a reference to the new root node R of the rebalanced subtree.

Node doubleWithLeftChild(Node p)

{

}

where the Node structure is private class Node

{

public E data;

public Node left;

public Node right;

public int height;

public Node() { height = -1; }

public Node(E d) { data = d; height = 0; }