![]() |
#9 |
Участник
|
В первом куске кода получается ноль потому, что сначала Вы узел удаляете, а потом для удаленного узла пытаетесь получить следующий на том же уровне. Нужно это делать перед удалением, т.к. idx удаленного узла становится недействительным.
Что есть "пустая нода"? Та, у которой нет дочерних? Ведь этак проще всего просто удалить все элементы, т.к. удаляя "пустую" по такому критерию на разных уровнях, постепенно придем к тому, что все будут пустыми. Все элементы можно обойти рекурсивно (об этом писали выше): X++: void iterate(TreeItemIdx _idx) { while (idx) { // ... iterate(tree.getChild(_idx)); // ... _idx = tree.getNextSibling(_idx); } } ; iterate(tree.getRoot()); |
|