参考了一些博主的思路,自己一开始想到的是中序遍历输出一个数组,再for循环逐个比较是否为升序,奈何超时了...明天再试试
0x00:从定义出发
1.
给定一个根结点,根结点左子树的Data全都小于该结点 --->Traverse_mid_Left函数
该根结点的左孩子也是如此,右孩子也是如此。--->IsBit函数
2.
给定一个根结点,根结点右子树的Data全都小于该结点--->Traverse_mid_Right函数
该根结点的左孩子也是如此,右孩子也是如此。--->--->IsBit函数
//判断中序输出是否为升序
int Traverse_mid_Left(BinTree p,int val)
{
if(!p)
return true;
else
return (p->Data < val
&& Traverse_mid_Left(p->Left,val)
&& Traverse_mid_Left(p->Right,val));
}
int Traverse_mid_Right(BinTree p,int val)
{
if(!p)
return true;
else
return (p->Data > val
&& Traverse_mid_Right(p->Left,val)
&& Traverse_mid_Right(p->Right,val));
}
bool IsBST ( BinTree T )
{
if(!T)
return true;
else
return Traverse_mid_Left(T->Left,T->Data)
&& Traverse_mid_Right(T->Right,T->Data)
&& IsBST (T->Left )
&& IsBST (T->Right);
}