keys keys left subtree middle subtree keys right subtree figure search property of - tree all keys less than the first key of node are stored in the left subtree of if the node has two childrenall keys greater than the first key of node are stored in the middle subtree of if the node has three children( all keys greater than the first key of node but less than the second key are stored in the middle subtree of and ( all keys greater than the second key are stored in the right subtree the implementation of - tree assumes the nodes are constructed from the treenode class as defined in listing listing storage class for creating the - tree nodes class treenodeobject )def __init__selfkeydata )self key key self key none self data data self data none self left none self middle none self right none is this leaf nodedef isaleafself )return self left is none and self middle is none and self right is none are there two keys in this nodedef isfullself )return self key is not none does the node contain the given target keydef haskeyselftarget )if (target =self key or (self key is not none and target =self key return true else return false (listing continued