如何重置静态变量或如何为二叉树创建 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);
   }
}