m0_72322824 2023-04-17 21:24 采纳率: 70.6%

# 平衡二叉树有什么问题吗？0xF报错是什么意思？

``````#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>

typedef int SBTType;

typedef struct SBBTree {
SBTType data;
struct SBBTree* lchild, * rchild;
int hight;
}BTNode, *BTree;

int gethight(BTree root);
int whomax(int a, int b);
void LL(BTree* root);
void RR(BTree* root);
void avlInsert(BTNode** t,int x);

int gethight(BTree root ) {
if (root) {
return root->hight;
}
else {
return 0;
}
}

int whomax(int a, int b) {
return a > b ? a : b;
}

void LL(BTree* root) {
BTNode* mid= (*root)->lchild;
(*root)->lchild = mid->rchild;
mid->rchild = (*root);
(*root) = mid;
(*root)->hight = whomax(gethight((*root)->lchild), gethight((*root)->rchild)) + 1;
mid->hight = whomax(gethight(mid->lchild), gethight(mid->rchild)) + 1;

}
void RR(BTree* root) {
BTNode* mid = (*root)->rchild;
(*root)->rchild = mid->lchild;
mid->lchild = (*root);
(*root) = mid;
(*root)->hight = whomax(gethight((*root)->lchild), gethight((*root)->rchild)) + 1;
mid->hight = whomax(gethight(mid->lchild), gethight(mid->rchild)) + 1;
}

void avlInsert(BTNode** t, int x) {
if ((*t) == NULL) {
(*t) = (BTNode*)malloc(sizeof(BTNode));
if (!(*t)) {
printf("fail");
}
else {
(*t)->data = x;
(*t)->lchild = NULL;
(*t)->rchild = NULL;
(*t)->hight = 0;
}
}
else if ((*t)->data > x) {
avlInsert(&((*t)->lchild), x);
int Lh = gethight((*t)->lchild);
int Rh = gethight((*t)->rchild);
if (Lh - Rh == 2) {
if (x < ((*t)->lchild)->data) {
LL(t);
}
else {
RR(&((*t)->lchild));
LL(t);
}
}

}
else if ((*t)->data < x) {
avlInsert(&((*t)->rchild), x);
int Lh = gethight((*t)->lchild);
int Rh = gethight((*t)->rchild);
if (Lh - Rh == 2) {
if (x > ((*t)->rchild)->data) {
RR(t);
}
else {
LL(&((*t)->rchild));
RR(t);
}
}
}
(*t)->hight = whomax(gethight((*t)->lchild), gethight((*t)->rchild)) + 1;

}
void preOrder(BTNode* T) {
if (T) {
printf("%d ", T->data);
preOrder(T->lchild);
preOrder(T->rchild);
}
}

int main ()
{
BTree t;
int num[5] = { 1,8,6,7,10 };
for (int i = 0; i < 5; i++) {
avlInsert(&t, num[i]);
}
preOrder(t);
return 0;
}
``````

• 写回答

#### 2条回答默认 最新

• 于扶摇 2023-04-18 11:16
关注

平衡二叉树是一种特殊的二叉树，它满足以下两个条件：

左子树和右子树都是二叉搜索树，且左子树的所有节点的值都小于或等于右子树的所有节点的值。
左子树和右子树的高度差不超过1。
如果一个二叉树不满足这两个条件，那么它就不是一个平衡二叉树。

0xF报错是一个编程错误，通常表示在编译过程中出现了未定义的行为或错误。具体来说，0xF是一个十六进制数，它可能代表一个特殊的二进制位或者一个无效的指令。如果在编译过程中出现了0xF错误，那么可能是因为程序中出现了与0xF相关的语法错误或逻辑错误，需要仔细检查代码并进行修改。

本回答被题主选为最佳回答 , 对您是否有帮助呢?
评论

• 系统已结题 5月1日
• 已采纳回答 4月23日
• 创建了问题 4月17日

#### 悬赏问题

• ¥15 求一下解题思路，完全不懂
• ¥15 tensorflow
• ¥15 densenet网络结构中，特征以cat方式复用后是怎么进行误差回传的
• ¥15 STM32G471芯片spi设置了8位，总是发送16位
• ¥15 R语言并行计算beta-NTI中tree文件的类型
• ¥15 如何解读marsbar导出的ROI数据？
• ¥20 求友友协助弄一下基于STC89C52单片机的声光控制灯原理图
• ¥15 arduino双向交通灯设计
• ¥15 有没有会粒子群算法的大能（○゜ε＾○）求带不会出收敛图😭
• ¥15 Matlab读取根元素出错