C 为什么我没有得到最后的打印语句,无法得到树的高度?
为节点获取值后,程序终止。我不知道我做错了什么,请帮忙。我甚至不知道这些值是否被插入C 为什么我没有得到最后的打印语句,无法得到树的高度?,c,binary-tree,binary-search-tree,C,Binary Tree,Binary Search Tree,为节点获取值后,程序终止。我不知道我做错了什么,请帮忙。我甚至不知道这些值是否被插入 struct Node { int data; struct Node* left; struct Node* right; }; struct Node* GetNode(int data){ struct Node* newnode = (struct Node*)malloc(sizeof(struct Node)); newnode->data=data;
struct Node
{
int data;
struct Node* left;
struct Node* right;
};
struct Node* GetNode(int data){
struct Node* newnode = (struct Node*)malloc(sizeof(struct Node));
newnode->data=data;
newnode->left = NULL;
newnode->right = NULL;
}
struct Node* insert(struct Node* root,int data){
if(root=NULL){
root = GetNode(data);
return root;
}
else if(data <= root->data){
root->left = insert(root->left,data);
}
else{
root->right = insert(root->right,data);
}
return root;
}
int height(struct Node* root){
if(root==NULL){
return 0;
}
else{
int lh = height(root->left);
int rh = height(root->right);
if(lh>rh){
return (lh+1);
}
else{
return (rh+1);
}
}
}
int main() {
struct Node* root =NULL;
int n,i;
printf("Enter the total number of nodes in the tree: ");
scanf("%d",&n);
int value[n];
for(i=0;i<n;i++){
printf("Enter the %d node ",i+1);
scanf("%d",&value[i]);
}
for(i=0;i<n;i++){
root = insert(root,value[i]);
}
int high = height(root);
printf("Height of the given tree is : %d ",high);
return 0;
}
struct节点
{
int数据;
结构节点*左;
结构节点*右;
};
结构节点*GetNode(整型数据){
结构节点*新节点=(结构节点*)malloc(sizeof(结构节点));
新建节点->数据=数据;
newnode->left=NULL;
newnode->right=NULL;
}
结构节点*插入(结构节点*根,int数据){
if(root=NULL){
root=GetNode(数据);
返回根;
}
else if(数据){
根->左=插入(根->左,数据);
}
否则{
根->右=插入(根->右,数据);
}
返回根;
}
整数高度(结构节点*根){
if(root==NULL){
返回0;
}
否则{
int lh=高度(根部->左侧);
int rh=高度(根部->右侧);
如果(左侧>右侧){
返回(左侧+1);
}
否则{
返回(rh+1);
}
}
}
int main(){
结构节点*root=NULL;
int n,i;
printf(“输入树中的节点总数:”);
scanf(“%d”和“&n”);
整数值[n];
对于(i=0;i,代码中有两个问题
在函数struct Node*GetNode(int data)
中,您没有返回newnode
在函数struct Node*insert(struct Node*root,int data)
中,在if条件if(root=NULL)
中,应使用=
以下是更正后的工作代码:
struct Node
{
int data;
struct Node* left;
struct Node* right;
};
struct Node* GetNode(int data){
struct Node* newnode = (struct Node*)malloc(sizeof(struct Node));
newnode->data=data;
newnode->left = NULL;
newnode->right = NULL;
return newnode;
}
struct Node* insert(struct Node* root,int data){
if(root==NULL){
root = GetNode(data);
return root;
}
else if(data <= root->data){
root->left = insert(root->left,data);
}
else{
root->right = insert(root->right,data);
}
return root;
}
int height(struct Node* root){
if(root==NULL){
return 0;
}
else{
int lh = height(root->left);
int rh = height(root->right);
if(lh>rh){
return (lh+1);
}
else{
return (rh+1);
}
}
}
int main() {
struct Node* root =NULL;
int n,i;
printf("Enter the total number of nodes in the tree: ");
scanf("%d",&n);
int value[n];
for(i=0;i<n;i++){
printf("Enter the %d node ",i+1);
scanf("%d",&value[i]);
}
for(i=0;i<n;i++){
root = insert(root, value[i]);
}
int high = height(root);
printf("Height of the given tree is : %d ",high);
return 0;
}
struct节点
{
int数据;
结构节点*左;
结构节点*右;
};
结构节点*GetNode(整型数据){
结构节点*新节点=(结构节点*)malloc(sizeof(结构节点));
新建节点->数据=数据;
newnode->left=NULL;
newnode->right=NULL;
返回newnode;
}
结构节点*插入(结构节点*根,int数据){
if(root==NULL){
root=GetNode(数据);
返回根;
}
else if(数据){
根->左=插入(根->左,数据);
}
否则{
根->右=插入(根->右,数据);
}
返回根;
}
整数高度(结构节点*根){
if(root==NULL){
返回0;
}
否则{
int lh=高度(根部->左侧);
int rh=高度(根部->右侧);
如果(左侧>右侧){
返回(左侧+1);
}
否则{
返回(rh+1);
}
}
}
int main(){
结构节点*root=NULL;
int n,i;
printf(“输入树中的节点总数:”);
scanf(“%d”和“&n”);
整数值[n];
对于(i=0;i)您没有检查insert中的漏洞的返回值。添加代码。只是编辑并添加了整个代码。请检查谢谢