@Sneiksus

Как удалить обьект из дерева с помощью списка?

Есть узел бинарного дерева

class Node{
    public int val;
    public Node left;
    public Node right;
}


при создании каждого нового узла он также добавляется в список

List<Node> l = new List<Node>();
Node n = new Node();
l.add(n);


и теперь мне нужно при удалении узла из списка с помощью removeAt(), чтобы удаленный узел также удалился из других узлов которые содержат ссылку на него в своих left right свойствах(Например чтобы после удаления там был null). Как это можно сделать на c#?
  • Вопрос задан
  • 99 просмотров
Пригласить эксперта
Ответы на вопрос 2
yarosroman
@yarosroman Куратор тега C#
C# the best
Заведите ещё свойство Parent на родительский узел. Тогда при удалении, можно обратиться к родительской и удалить узел из ее свойств, чтобы не обходить дерево.
Ответ написан
Комментировать
BasiC2k
@BasiC2k
.NET developer (open to job offers)
Нужно использовать рекурсивную функцию.
На вход подаётся нода, далее - идёт проверка, если у неё есть дочерние ноды, то идёт новый вызов этой функции и т.д.
К конце кода, когда обработаны (удалены) все дочерние ноды - идёт удаление поданной на вход ноды.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы