将 8, 9, 7, 2, 3, 5, 6, 4 顺序插入一棵初始为空的AVL树。下列句子中哪句是错的? A. 7 是根结点 B. 3 和 8 是兄弟 C. 5 是 8 的父结点 D. 4 和 6 是兄弟 分数 3
时间: 2023-12-27 17:05:34 浏览: 117
将 8, 9, 7, 2, 3, 5, 6, 4 顺序插入一棵初始为空的AVL树,得到的树如下图所示:
```
5
/ \
3 8
/ \ / \
2 4 7 9
\
6
```
因此,下列句子中错误的是 B. 3 和 8 是兄弟。
相关问题
将 9, 8, 7, 2, 3, 5, 6, 4 顺序插入一棵初始为空的AVL树。下列句子中哪句是错的? A. 2 和 5 是兄弟 B. 有2个结点的平衡因子为-1 C. 5 是根结点 D. 最后得到的AVL树的高度是3
将 9, 8, 7, 2, 3, 5, 6, 4 顺序插入一棵初始为空的AVL树,得到的树如下:
```
5
/ \
3 8
/ \ / \
2 4 7 9
\
6
```
因此,选项 A 是错的,2 和 5 不是兄弟。选项 B 正确,有两个结点的平衡因子为 -1,分别是结点 2 和结点 9。选项 C 错误,5 不是根结点。选项 D 错误,最后得到的AVL树的高度是 4。因此,答案为 D。
设有线性表(34,12,45,64,28,36,45),采用顺序存储结构。编程实现有关顺序表的下列基本操作: (1)初始化一个空的顺序表; (2)在顺序表的第i个位-置上插入一个新元素; (3)在顺序表中查找指定值的元素位置; (4)删除顺序表中的第i个元素; (5)删除顺序表中指定值的元素; (6)输出顺序表中的所有元素值。
好的,我来为您解答关于顺序表的基本操作。
1.初始化一个空的顺序表
初始化一个空的顺序表可以采用以下代码:
```C++
#define MAXSIZE 100 // 定义最大长度
typedef struct {
int data[MAXSIZE]; // 用数组存放数据元素
int length; // 当前长度
}SqList;
// 初始化一个空的顺序表
void InitList(SqList &L){
L.length = 0;
}
```
2.在顺序表的第i个位置上插入一个新元素
在顺序表的第i个位置上插入一个新元素可以采用以下代码:
```C++
// 在顺序表的第i个位置上插入一个新元素
bool ListInsert(SqList &L, int i, int e){
if(i < 1 || i > L.length+1){ // 判断i的范围是否有效
return false;
}
if(L.length >= MAXSIZE){ // 判断存储空间是否已满
return false;
}
for(int j=L.length; j>=i; j--){ // 将第i个位置及之后的元素后移
L.data[j] = L.data[j-1];
}
L.data[i-1] = e; // 在位置i处放入新元素e
L.length++; // 长度加1
return true;
}
```
3.在顺序表中查找指定值的元素位置
在顺序表中查找指定值的元素位置可以采用以下代码:
```C++
// 在顺序表中查找指定值的元素位置
int LocateElem(SqList L, int e){
for(int i=0; i<L.length; i++){ // 从前往后遍历顺序表
if(L.data[i] == e){ // 找到指定值元素
return i+1; // 返回其位置
}
}
return 0; // 未找到,返回0
}
```
4.删除顺序表中的第i个元素
删除顺序表中的第i个元素可以采用以下代码:
```C++
// 删除顺序表中的第i个元素
bool ListDelete(SqList &L, int i){
if(i < 1 || i > L.length){ // 判断i的范围是否有效
return false;
}
for(int j=i; j<L.length; j++){ // 将第i个位置及之后的元素前移
L.data[j-1] = L.data[j];
}
L.length--; // 长度减1
return true;
}
```
5.删除顺序表中指定值的元素
删除顺序表中指定值的元素可以采用以下代码:
```C++
// 删除顺序表中指定值的元素
bool DeleteElem(SqList &L, int e){
int i = LocateElem(L, e); // 查找指定值元素的位置
if(i == 0){ // 未找到指定值元素
return false;
}
ListDelete(L, i); // 删除该元素
return true;
}
```
6.输出顺序表中的所有元素值
输出顺序表中的所有元素值可以采用以下代码:
```C++
// 输出顺序表中的所有元素值
void PrintList(SqList L){
for(int i=0; i<L.length; i++){
cout << L.data[i] << " ";
}
cout << endl;
}
```
综上所述,以上就是顺序表的基本操作的代码实现。
相关推荐
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)