Мне нужно создать функцию, которая брала дерево t не пустым, изменяла содержимое каждого листа в своем поле, подставляя сумму значений, содержащихся в узлах пути от корня к листу (включая корень и лист).
Итак, я создал это:
void sum(BinTree t) {
while(!t.isLeaf()) {
sumL += sum(t.left);
sumR += sum(t.right);
}
t.element = ?;
}
boolean isLeaf(BinTree t) {
return t.left == null && t.right == null;
}
Что поставить вместо "?"? Я не думаю, что функция правильная.. Я не могу создавать рекурсивные функции для бинарных деревьев, я нахожу их очень сложными..
Спасибо
РЕДАКТИРОВАТЬ: я изменил свой метод:
void leafSum(BinTree t) {
sumLeaf(root, 0);
}
void leafSum(BinTree t, int tot) {
if(t->left == NULL && t->right == NULL)
t->elem = tot;
else {
sumLeaf(t->left, tot + t->elem);
sumLeaf(t->right, tot + t->elem);
}
}