Skip to content

2022年 408 数据结构 第 41 题

数据结构2022年综合题8分

题目 ​

已知非空二叉树 T 的结点值均为正整数,采用顺序存储方式保存,数据结构定义如下:

c
typedef struct {                    // MAX_SIZE 为已定义常量
    Elemtype SqBiTNode[MAX_SIZE];   // 保存二叉树结点值的数组
    int      ElemNum;               // 实际占用的数组元素个数
} SqBiTree;

T 中不存在的结点在数组 SqBiTNode 中用 -1 表示。例如,对于两棵非空二叉树 T₁ 和 T₂:

二叉树 T₁(满足 BST 定义):

402530276080

二叉树 T₂(不满足 BST 定义):

4050303560

T₁ 和 T₂ 对应的顺序存储如下(位置从下标 0 起,1-indexed 的层序位置规则:父 i 的左孩子在 2i+1、右孩子在 2i+2):

数组内容(依次)ElemNum
T₁.SqBiTNode[40, 25, 60, -1, 30, -1, 80, -1, -1, 27]10
T₂.SqBiTNode[40, 50, 60, -1, 30, -1, -1, -1, -1, -1, 35]11

请设计一个尽可能高效的算法,判定一棵采用这种方式存储的二叉树是否为二叉搜索树,若是则返回 true,否则返回 false。要求:

(1) 给出算法的基本设计思想。

(2) 根据设计思想,采用 C 或 C++ 语言描述算法,关键之处给出注释。

最后更新:

🎬 可视化演示
加载中...

提示:可在可视化区直接操作播放、步进、修改参数