classBSTNode{private:ElementTypeelement;// element stored in tree node
intleftChild;// index to left child/subtree
intrightChild;// index to right child/subtree
}classBinarySearchTree{private:BSTNodemyTree[CAPACITY];// array of tree elements
introot;// index of root
intelementCount;// number of elements
}
Array-Based 2
Visual Representation
Code
1
2
3
4
5
classBinarySearchTree{private:ElementTypemyTree[CAPACITY];// array of elements
intelementCount;// number of elements
}
Link-based
1
2
3
4
5
6
7
8
9
10
11
12
classBSTNode{private:ElementTypeelement;// element stored in tree
nodeBSTNode*leftChild;// link to left child/subtree
BSTNode*rightChild;// link to right child/subtree
}classBinarySearchTree{private:BSTNode*root;// root of tree
intelementCount;// number of elements
}
Public Interface
insert()
wrapper function
validate params, prepare new params, call recursive private method insertR()
insertR()
1
2
3
4
5
6
7
8
9
10
11
12
Node*BST::insertR(Node*subTree,Node*newNode){if(subTree==NULL)returnnewNode;// Base case
else{if(subTree→getElement()>newNode→getElement())subTree→setLeft(insertR(subTree→getLeft(),newNode));elsesubTree→setRight(insertR(subTree→getRight(),newNode));returnsubTree;}// end if
}