这段代码存在一些错误,我已经对其进行了修复。以下是修复后的代码:
#include <stdio.h>
#include <stdlib.h>
struct Node {
char data;
struct Node* left;
struct Node* right;
};
struct Node* createNode(char data) {
struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));
if (newNode == NULL) {
printf("Error: Failed to create a new node.\n");
return NULL;
}
newNode->data = data;
newNode->left = NULL;
newNode->right = NULL;
return newNode;
}
struct Node* createBinaryTree() {
struct Node* A = createNode('A');
struct Node* B = createNode('B');
struct Node* C = createNode('C');
A->left = B;
A->right = C;
struct Node* D = createNode('D');
struct Node* E = createNode('E');
struct Node* F = createNode('F');
struct Node* G = createNode('G');
struct Node* H = createNode('H');
struct Node* I = createNode('I');
struct Node* J = createNode('J');
struct Node* K = createNode('K');
struct Node *L= createNode( 'L');
struct Node *M=createNode( 'M');
struct Node *N=createNode( 'N');
B->left=D; B->right=E;
D ->left=NULL ; D ->right=NULL;
E ->left=H ; E ->right=NULL ;
H ->left=J ; H ->right=NULL ;
J ->left=L ; J ->right=M ;
M ->left=N ; M ->right=NULL ;
C->left=F; C->right=G;
F ->left=NULL; F ->right=NULL;
G ->left=I; G ->right=NULL;
return A;
}
void printTree(struct Node* root) {
if (root == NULL) {
return;
}
printTree(root->left);
printf("%c ", root->data);
printTree(root->right);
}
void releaseTree(struct Node* root) {
if (root == NULL) {
return;
}
releaseTree(root->left);
releaseTree(root->right);
free(root);
}
int getHeight(struct Node* root) {
if (root == NULL) {
return 0;
}
int leftHeight = getHeight(root->left);
int rightHeight = getHeight(root->right);
return (leftHeight > rightHeight ? leftHeight : rightHeight) + 1;
}
int main() {
struct Node* root = createBinaryTree();
printf("Binary Tree: ");
printTree(root);
printf("\n");
int height = getHeight(root);
printf("Height of the tree: %d\n", height);
releaseTree(root);
return 0;
}
修复后的代码可以构建一个二叉树,并输出树的内容以及高度。请注意,这里修复了一些变量声明的错误和结构体定义中的拼写错误。
内容由零声教学AI助手提供,问题来源于学员提问