030数据结构真题二叉排序树的判断

设计判断二叉树是否为二叉排序树的算法。

二叉排序树:左子树值小于根结点。

右子树值大于根接点的二叉排序树。

直接上代码,采用的是递归方法。

typedefstructTNode

{

TNode*pLeft;

intchData;

TNode*pRight;

}TNode,*PTNode;

boolIsBinarySortTree(TNode*root)

{

//当接点为空的时候满足二叉排序树

if(NULL==root){

returntrue;

}

//当左接点存在,如果根小于左接点,就不满足二叉排序树

//当右接点存在,如果根大于右结点,就不满足二叉排序树

if((root-pLeft!=NULLroot-chDataroot-pLeft-chData)

(root-pRight!=NULLroot-chDataroot-pRight-chData)){

returnfalse;

}

boolbIsLeft=IsBinarySortTree(root-pLeft);

//只要有一个接点不满足,马上就结束。

if(!bIsLeft){

returnfalse;

}

boolbIsRight=IsBinarySortTree(root-pRight);

if(!bIsRight){

returnfalse;

}

//如果能执行到最后,一定是满足二叉排序树的,因为在前面只要有一个不满足就已经结束了,根本不会执行到这里。

returntrue;

}

当然,还可以使用队列来写程序。还是那句话,如果有问题的话,可以找我私聊。包教包会。茶水丰厚。

赞赏

长按







































北京哪里治白癜风好
北京哪家白癜风最专业



转载请注明:http://www.92nongye.com/gaishu/204619460.html