个判别给定二叉树是否为二叉排序树的算法

王朝c/c++·作者佚名  2006-01-06
窄屏简体版  字體: |||超大  

【题目】试写一个判别给定二叉树是否为二叉排序树的算法。

【来源】长沙铁道学院98年第五(1)题(12’)

【解答】

typedef struct node{

char data;

struct node *left,*right;

}*T;

issorttree(T)

{

initqueue(Q); // 初始化队列

inqueue(Q,T); // 树根结点进队列

while(!empty(Q)){

outqueue(Q,T);

if(T->data>T->left->data&&T->data<T->right->data){

if(T->left)inqueue(Q,T->left);

if(T->right)inqueue(Q,T->right);

}

else if(T->left||T->right)return 1; // 不符合二叉排序树的特征,则终止并返回‘ 1 ’

}

return 0; // 是二叉排序树,则返回 ‘0’

}

【分析】注意队列的运用,其他如图的广度搜索(教材《清华 C 版》)。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航