Este dilema se puede abordar de variadas formas, pero en este caso te dejamos la que en nuestra opinión es la solución más completa.
Ejemplo: comprobar bst
// C++ program to check if a given tree is BST. #include usingnamespace std;/* A binary tree node has data, pointer to
left child and a pointer to right child */structNodeint data;structNode* left,*right;;// Returns true if given tree is BST. boolisBST(Node* root, Node* l=NULL, Node* r=NULL)// Base condition if(root ==NULL)returntrue;// if left node exist then check it has // correct data or not i.e. left node's data // should be less than root's data if(l !=NULLand root->data <= l->data)returnfalse;// if right node exist then check it has // correct data or not i.e. right node's data // should be greater than root's data if(r !=NULLand root->data >= r->data)returnfalse;// check recursively for every node. returnisBST(root->left, l, root)andisBST(root->right, root, r);/* Helper function that allocates a new node with the
given data and NULL left and right pointers. */structNode*newNode(int data)structNode* node =new Node;
node->data = data;
node->left = node->right =NULL;return(node);/* Driver program to test above functions*/intmain()structNode*root =newNode(3);
root->left =newNode(2);
root->right =newNode(5);
root->left->left =newNode(1);
root->left->right =newNode(4);if(isBST(root,NULL,NULL))
cout <<"Is BST";else
cout <<"Not a BST";return0;
Aquí tienes las comentarios y valoraciones
Si entiendes que ha sido de utilidad nuestro post, sería de mucha ayuda si lo compartieras con más programadores de esta forma nos ayudas a extender nuestro contenido.
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)