Using the binary tree ADT (such as numChildren, inherited from the tree ADT, and left, right, hasLeft, hasRight, etc.), provide a recursive method isProper(root) to test whether the binary tree root is proper. Algorithm isProper(root: BT) Input: root: binary tree. Output: result: boolean, true iff root is a proper BT. -- initial conditions [1] if root == null return true; [2] if ((!root.hasLeft()) and (!root.hasRight())) return true; -- no child. [3] if ((root.hasLeft()) and (!root.hasRight())) return false;-- left child only. [4] if ((!root.hasLeft()) and (root.hasRight())) return false; -- right child only. -- recursive conditions: root has both left and right children. [5] return isProper(root.left()) and isProper(root.right());