// 带调试信息的版本
bool func_debug(SqBiTree T, int i, ElemType low, ElemType high, int depth) {
if (i >= T.ElemNum || T.Node[i] == -1) {
printf("%*s空结点 %d\n", depth*2, "", i);
return true;
}
printf("%*s检查结点 %d (值=%d), 范围(%.0f, %.0f)\n",
depth*2, "", i, T.Node[i], (double)low, (double)high);
if (T.Node[i] <= low || T.Node[i] >= high) {
printf("%*s违反BST性质: %d 不在 (%.0f, %.0f) 范围内\n",
depth*2, "", T.Node[i], (double)low, (double)high);
return false;
}
bool left = func_debug(T, 2*i+1, low, T.Node[i], depth+1);
bool right = func_debug(T, 2*i+2, T.Node[i], high, depth+1);
return left && right;
}