gpt4 book ai didi

C - 二叉树 : can't return correct number of pruned nodes

转载 作者:行者123 更新时间:2023-11-30 15:08:28 25 4
gpt4 key购买 nike

我需要修剪一棵二叉树超过一定的级别l,并且需要返回修剪的节点数。

这是我得到的:

#include "abin.h"

int freeAB (ABin a) {
int count = 0;
if(a == NULL) return count;
count = count + freeAB(a->esq);
count = count + freeAB(a->dir);
free(a);
count++;
return count;
}


int pruneAB (ABin *a, int l) {

int count = 0;
if(l == 0){
count = count + freeAB((*a)->esq);
count = count + freeAB((*a)->dir);
(*a) = NULL;
}
else{
count = count + pruneAB(&((*a)->esq), l-1);
count = count + pruneAB(&((*a)->dir), l-1);
}
return count;
}

ABIN.H:

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

typedef struct lligada {
int valor;
struct lligada *prox;
} *LInt;

typedef struct nodo {
int valor;
struct nodo *esq, *dir;
} *ABin;

int pruneAB (ABin *a, int l);

这是我应该得到的和我得到的输出:

Input: (depth=2)
8
4 12
2 6 10 14
1 3 5 7 9 11 13 15

Output:
[expected] res=12
8
4 12

[obtained] res=8
8
4 12

0/10 correct answers

有趣的是,如果我创建类似 int r = 0; 的东西并执行 r++;每次 if(l == 0) 语句为 true,然后执行 print 语句,都会打印 r 4 次。

如果我在最终计数中加上 4,我就会得到正确的答案。我假设我应该添加来计算 if(l == 0) 为 true 的次数。

(我做不到。如果我计算++,我就会遇到段错误)

你会怎么做?谢谢。

https://codeboard.io/projects/16275

最佳答案

int pruneAB (ABin *a, int l) {
int count = 0;
if (!*a) return 0;
if (l < 0) return count;
if(l == 0){
count = freeAB(*a);
(*a) = NULL;
}
else{
count = count + pruneAB(&((*a)->esq), l-1);
count = count + pruneAB(&((*a)->dir), l-1);
}
return count;
}

关于C - 二叉树 : can't return correct number of pruned nodes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37362675/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com