如何重置静态变量或如何为二叉树创建 get_length 函数?
How to reset static variable or how to create the get_length function for a binary tree?
我决定将数组存储到二叉树中,这样数组的所有元素都位于树的右侧。如何计算所有这些元素?
int get_length(Node * array) {
static int len = 0;
if (array == NULL) return len;
else {
len++;
get_length(array->right);
}
}
静态变量中的问题:每次使用此函数后,变量 len
不会重置,返回的长度不正确。每次使用后该变量都会增加。
我建议传递长度:
int get_length(Node * array, int len) {
if (array == NULL) return len;
else {
return get_length(array->right, len + 1);
}
}
避免在有迭代解决方案时使用递归:
int get_length(Node * array) {
int len = 0;
while (array) {
array = array->right;
len++;
}
return len;
}
不要使用 static
。累加递归调用的return值。例如:
int get_length(Node * array) {
if (array == NULL) return 0;
else {
return 1+get_length(array->right);
}
}
我决定将数组存储到二叉树中,这样数组的所有元素都位于树的右侧。如何计算所有这些元素?
int get_length(Node * array) {
static int len = 0;
if (array == NULL) return len;
else {
len++;
get_length(array->right);
}
}
静态变量中的问题:每次使用此函数后,变量 len
不会重置,返回的长度不正确。每次使用后该变量都会增加。
我建议传递长度:
int get_length(Node * array, int len) {
if (array == NULL) return len;
else {
return get_length(array->right, len + 1);
}
}
避免在有迭代解决方案时使用递归:
int get_length(Node * array) {
int len = 0;
while (array) {
array = array->right;
len++;
}
return len;
}
不要使用 static
。累加递归调用的return值。例如:
int get_length(Node * array) {
if (array == NULL) return 0;
else {
return 1+get_length(array->right);
}
}