//判斷一棵二叉樹是不是二叉排序樹//思路:二叉排序樹的特點是,若左子樹非空,則左子樹上結點的值均小於根結點的值;//若右子樹非空,則右子樹上結點的值均大於根結點的值。所以根據這一特點,可以看出//二叉排序樹的中序遍曆是一個遞增序列。#include<iostream>#include <limits.h>using namespace std;int prev1 = INT_MIN;typedef struct BiTreeNode{int data;BiTreeNode* lchild;BiTreeNode* rchild;BiTreeNode(int x) : data(x), lchild(NULL), rchild(NULL) {}};int JudgeBST(BiTreeNode *root){int b1,b2;if(root == NULL)return 1;else{b1 = JudgeBST(root->lchild);if(b1 == 0 || prev1 >= root->data)return 0;prev1 = root->data;b2 = JudgeBST(root->rchild);return b2;}}//***********測試代碼************// 10 // / // 7 // /\ // 4 8// \// 9void main(){ //產生一棵二叉樹 BiTreeNode* Node1 = new BiTreeNode(10);//產生節點 BiTreeNode* Node2 = new BiTreeNode(7); BiTreeNode* Node3 = new BiTreeNode(4); BiTreeNode* Node4 = new BiTreeNode(8); BiTreeNode* Node5 = new BiTreeNode(9); Node1->lchild=Node2;//串連節點Node2->lchild=Node3;Node2->rchild=Node4; Node5->rchild=Node5;int p = JudgeBST(Node1);cout<<p<<endl;}