Сумма левого ребенка в бинарном дереве поиска

java binary-search-tree

233 просмотра

2 ответа

0 Репутация автора

У меня есть следующий код, который заменяет каждый узел в дереве двоичного поиска с суммой его дочерних элементов.

public static void sumofChild(Node root) {
    if (root == null) return;
    sumofChild(root.getLeft());
    sumofChild(root.getRight());
    if (root.getLeft() != null) {
        int sum = root.getData() + root.getLeft().getData();
        root.setData(sum);
    }
    if (root.getRight() != null) {
        int sum = root.getData() + root.getRight().getData();
        root.setData(sum);
    }
}

Теперь я хочу изменить этот код, чтобы обновлять каждый узел только суммой его левых потомков.

По сути, если это мое дерево ввода,

   12 
  9 14
7 10 13 17

Выходное дерево должно быть,

    28
  16 27
7 10 13 17

Я не могу понять это правильно. Любая помощь приветствуется.

Автор: user6461129 Источник Размещён: 18.07.2016 02:45

Ответы (2)


0 плюса

783 Репутация автора

Решение
public static void sumofChild(Node root) {
    if (root == null) return;
    sumofChild(root.getLeft());
    sumofChild(root.getRight());
    if (root.getLeft() != null) {
        int sum = root.getData() + root.getLeft().getData();
        root.setData(sum);
    }
}
Автор: Armine Размещён: 18.07.2016 02:58

0 плюса

1 Репутация автора

int sumOfLeftChildren(Node* root){
    if(!root) return 0;
    sumOfLeftChildren(root->right);
    return root->val += sumOfLeftChildren(root->left);
}
Автор: user8322773 Размещён: 18.07.2017 03:31
Вопросы из категории :
32x32