我正在尝试递归调用我的 Preorder 和 Reverse Preorder 方法。这些方法适用于基于数组的二叉树,它们应该返回子树的所有元素的长度。但他们所做的是返回子树的第一个元素的长度。如果有人可以提供帮助,将不胜感激。
int left_width(vector<string>& vec, int i, int ret) {
int left = i * 2 + 1;
int right = i * 2 + 2;
ret = ret + vec[i].length();
if (left < (int)vec.size() && right <= (int)vec.size()) {
left_width(vec, left, ret);
left_width(vec, right, ret);
}
return ret;
}
int right_width(vector<string>& vec, int i, int ret) {
int right = i * 2 + 2;
int left = i * 2 + 1;
ret = ret + vec[i].length();
if (left < (int)vec.size() && right <= (int)vec.size()) {
right_width(vec, right, ret);
right_width(vec, left, ret);
}
return ret;
}