void BinarySearchTree<T>::traverseInorder(Node<T> *curNode) {
  if(curNode) {
    traverseInorder(curNode->getLeft());
    std::cout << " " << curNode->getElement();
    traverseInorder(curNode->getRight());
  }
}
Beispiel #2
0
// in order traversal of a tree. 
void traverseInorder(BTreeNode *head, vector<int> &vals) {
  if(NULL == head) return ;

  traverseInorder(head->left, vals); 

  vals.push_back(head->val); 

  traverseInorder(head->right, vals); 
}
void BinarySearchTree<T>::traverseInorder() {
  std::cout << "Tree Inorder traversal: ";
  if(!root) 
    std::cout << "(nil)";
  traverseInorder(root);
  std::cout << "\n";  
}
Beispiel #4
0
////////////////////////////////////////////////////////////////
// test if a tree is BST. 
////////////////////////////////////////////////////////////////
// the property of a binary search tree is that its left subtree 
// is smaller than its root and right subtree is bigger than root. 
////////////////////////////////////////////////////////////////
// suppose we use the same node as the previous one.
bool checkBST(BTreeNode *head) {
  if(NULL == head) return true; 

  // traverse the tree inorder. 
  vector<int> inorderVals; 
  traverseInorder(head, inorderVals); 

  int len = inorderVals.size(); 
  for(int i = 0; i < len - 1; ++i) {
    if(inorderVals[i] > inorderVals[i+1]) return false; 
  }
  return true; 
}