ツリー:ツリーがツリーであるかどうかを判断するアルゴリズムを設計します.

2598 ワード

二叉ソートツリーの特徴:左サブツリーのルートノード値のシーケンスが二叉ソートツリーを巡る場合、得られるシーケンスは厳密に増加するシーケンスである.したがって、ツリーがツリーソートツリーであるかどうかを判断することができます.すべてのノード値の最小値よりも小さい値を設定し、ノードが小さいから大きいまで判断すればよい.最小値が判定値より大きい場合は、二叉ソートツリーではないことを示す.最小値が判断値より小さい場合は、ツリーの最後のノードまで判断を続けます.二叉ソートツリーの場合、最小値はこの値より小さい場合、最も左側の値である必要があります.
int minnum=-32768,flag=1;
typedef struct node
{
	int key; 
	struct node *lchild,*rchild;
}bitree;
void inorder(bitree *bt)
{
	if (bt!=0) 
	{
		inorder(bt->lchild); 
		if(minnum>bt->key)
			flag=0; 
		minnum=bt->key;
		inorder(bt->rchild);
	}
}