|
|
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