Junior — Senior
46
Удаление из иерархии объектов всех неактивных узлов
Companies where asked:
HR SIGNAL
Task condition
Задача заключается в том, чтобы из дерева объектов удалить каждый узел, у которого свойство alive установлено в false. При этом, если у узла свойство alive равно true, то ни один из его предков и потомков не должен быть удалён – всё дерево, связанное с таким узлом, сохраняется.
Требования:
- Реализовать решение двумя способами: рекурсивным и итеративным.
- Описать, в каких ситуациях предпочтительнее применять каждый из подходов.
- Кратко изложить плюсы и минусы рекурсии и итерации для данной задачи.
export class TreeNode {
constructor(
public id: number,
public alive: boolean,
public children: TreeNode[],
public parent?: TreeNode
) { }
}
/* SOLUTION */
class TreeNodeItem extends TreeNode {
constructor(
public id: number,
public alive: boolean,
public children: TreeNodeItem[],
public parent?: TreeNodeItem
) {
super(id, alive, children, parent);
}
}
export function cleanTree(rootNode: TreeNodeItem) {
/* START SOLUTION */
}