ft_stack_top.c \
ft_tree_init.c \
ft_tree_append_child.c \
- *ft_tree_access_child.c \
- *ft_tree_access_data.c \
- ft_tree_erase_child.c \
+ ft_tree_access_child.c \
+ ft_tree_access_data.c \
+ ft_tree_erase_subtree.c \
ft_tree_replace_with_child.c \
ft_tree_forget_child.c \
ft_tree_free.c \
+++ /dev/null
-#include "ft_struct.h"
-
-t_ft_stat ft_tree_erase_child(t_tree_node *tree_node, size_t i, void (*free_el)(void *))
-{
- t_tree_node *child_to_erase;
-
- if (!tree_node || i >= tree_node->children.size)
- return (invalid_input);
- child_to_erase = ft_tree_access_child(tree_node, i);
- while (child_to_erase->children.size > 0)
- ft_tree_erase_child(child_to_erase, 0, free_el);
- if (free_el)
- free_el(&child_to_erase->data);
- ft_vec_free(&child_to_erase->children, NULL);
- return (ft_tree_forget_child(tree_node, i));
-}
--- /dev/null
+#include "ft_struct.h"
+
+t_ft_stat ft_tree_erase_subtree(t_tree_node *tree_node, size_t i, void (*free_el)(void *))
+{
+ t_tree_node *subtree;
+
+ if (!tree_node || i >= tree_node->children.size)
+ return (invalid_input);
+ subtree = ft_tree_access_child(tree_node, i);
+ while (subtree->children.size > 0)
+ ft_tree_erase_subtree(subtree, 0, free_el);
+ if (free_el)
+ free_el(&subtree->data);
+ ft_vec_free(&subtree->children, NULL);
+ return (ft_tree_forget_child(tree_node, i));
+}
if (!tree)
return ;
while (tree->children.size > 0)
- ft_tree_erase_child(tree, 0, free_el);
+ ft_tree_erase_subtree(tree, 0, free_el);
if (free_el)
free_el(&tree->data);
ft_vec_free(&tree->children, NULL);
/* By: ljiriste <marvin@42.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */
/* Created: 2024/06/20 16:59:43 by ljiriste #+# #+# */
-/* Updated: 2025/07/31 11:58:41 by ljiriste ### ########.fr */
+/* Updated: 2025/07/31 12:15:01 by ljiriste ### ########.fr */
/* */
/* ************************************************************************** */
t_ft_stat ft_tree_append_child(t_tree_node *tree_node, void *element);
t_tree_node *ft_tree_access_child(t_tree_node *tree_node, size_t i);
void *ft_tree_access_data(t_tree_node *tree_node);
-t_ft_stat ft_tree_erase_child(t_tree_node *tree_node, size_t i, void (*free_el)(void *));
+t_ft_stat ft_tree_erase_subtree(t_tree_node *tree_node, size_t i, void (*free_el)(void *));
t_ft_stat ft_tree_replace_with_child(t_tree_node *tree_node, size_t i, void (*free_el)(void *));
t_ft_stat ft_tree_forget_child(t_tree_node *tree_node, size_t i);
void ft_tree_free(t_tree *tree, void (*free_el)(void *));