Для TreeNode можно сделать то же, что и с https://github.com/HowProgrammingWorks/LinkedList и тут даже можно больше придумать:
- Поиск (с разной реализацией), например:
- Найти первый и вернуть через return:
findFirst(name):Node
- Найти все и вернуть через return массив:
findAll(name):[Node]
- Искать и вызывать callback при нахождении:
find(name, callback(Node))
- По имени, но не глубже указанного
find({ name, depth }, callback(Node))
- Посложнее:
find({ name, parent, depth, hasChildren }, callback(Node))
- По регулярному выражению:
find(nameRegExp, callback(Node))
- Добавление элементов:
shift, pop, erase
- Удаление элементов:
unshift, push, insert
- Вставка массива элементов:
append([node1, node2, node3])
- Заменить предка:
setParent(node, newParent)
и таких можно придумать много, вы поняли принцип
Для TreeNode можно сделать то же, что и с https://github.com/HowProgrammingWorks/LinkedList и тут даже можно больше придумать:
findFirst(name):NodefindAll(name):[Node]find(name, callback(Node))find({ name, depth }, callback(Node))find({ name, parent, depth, hasChildren }, callback(Node))find(nameRegExp, callback(Node))shift, pop, eraseunshift, push, insertappend([node1, node2, node3])setParent(node, newParent)и таких можно придумать много, вы поняли принцип