真题题目
已知非空二叉树T的结点值均为正整数,采用顺序存储方式保存,数据结构定义如下:
typedef struct {
// MAX_STZE为已定义常量
int SqBiTNode[MAX_SIZE]; // 保存二叉树结点值的数组
int ElemNum; // 实际占用的数组元素个数
} SqBiTree;
T中不存在的结点在数组SqBiTNode中用 -1 表示。例如,对于下图所示的两棵非空二叉树T1和 T2,
T1的存储结果如下:
T2的存储结果如下:
请设计一个尽可能高效的算法,判定一棵采用这种方式存储的二叉树是否为二叉搜索树,若是,则返回true,否则,返回false。要求:
- 给出算法的基本设计思想。
- 根据设计思想,采用C或 C++语言描述算法,关键之处给出注释。
(本文重点关注算法实现