void visit_leaf(t_tree * ptr, t_list ** ptrptr) { if(ptr->left == NULL && ptr->right == NULL) { printf("\nLeaf value = %d\nI'm going to put it in your list\n", ptr->value); list_insertion(ptrptr, ptr->value); } else { if(ptr->left != NULL) { visit_leaf(ptr->left, ptrptr); } if(ptr->right != NULL) { visit_leaf(ptr->right, ptrptr); } } }
/** Apply visit_leaf function to every rope leaf. */ void rope_traverse(struct rope *rope, void (*visit_leaf)(void *, size_t)) { struct rope_iter iter; rope_iter_create(&iter, rope); struct rope_node *leaf; for (leaf = rope_iter_start(&iter); leaf != NULL; leaf = rope_iter_next(&iter)) { visit_leaf(leaf->data, leaf->leaf_size); } }
int main() { t_tree * ptr; t_list *ptrptr = NULL; //è possibile inserire in runtime più nodi, basta mettere new_node dentro un while(!data) e chiedere se inserire a dx o sx t_tree *root = new_node(); root->left = new_node(); root->right = new_node(); root->left->left = new_node(); //root->left->right = new_node();*/ root->right->left = new_node(); root->right->right = new_node(); visit_leaf(root, &ptrptr); visit_list(&ptrptr); }