

|
|
|

add() and remove() manipulation operations.
size(), empty(), find(),
…

template <typename T> struct node T data node * left, * right
template <typename T, unsigned S> struct node T data node * children[S]
add(), remove() and member().

bool memeber(T e, node root) if root = nil, return false if root.data = e, return true if member(e, root.left), return true return member(e, root.right)

node * add(T e, node * root) return new node(e, root, nil)

node * remove(node * root)
if root.left ≠ nil
root.data = root.left.data
root.left = delete(root.left)
or root.right ≠ nil
root.data = root.right.data
root.right = delete(root.right)
or
root = nil
return root



bool member(T e, node root)
if root = nil, return false
if root.data = e, return true
if e < root.data
return member(e, root.left)
return member(e, root.right)
node * add(T e, node * root)
if root = nil
root = new node(data, nil, nil)
or e < root.data
root.left = add(e, root.left)
or
root.right = add(e, root.right)
return root

node * remove(node * r)
if r.left ≠ nil
r.left = remove_max(r.left, r.data)
or r.right ≠ nil
r.right = remove_min(r.right, r.data)
or
delete r
r = nil
return r