コード例 #1
0
ファイル: btree.c プロジェクト: yangyraaron/datastructure
static void traverse_preorder(BTREE_NODE_p_t node,BTREE_VISIT_PROC_p_t visit_proc){
    if (node!=NULL) {
        visit_proc(node->data);
        traverse_preorder(node->left, visit_proc);
        traverse_preorder(node->right, visit_proc);
    }
}
コード例 #2
0
ファイル: mirrors.c プロジェクト: luisbg/hhgtg
/* traverse the tree in order */
void
traverse_preorder (struct node *leaf)
{
  if (leaf) {
    printf ("%d ", leaf->key);
    traverse_preorder (leaf->left);
    traverse_preorder (leaf->right);
  }
}
コード例 #3
0
ファイル: tree.c プロジェクト: pinne/algodat
void traverse_preorder(struct tree *node)
{
	if (node == NULL)
		return;
	print_node(node);
	traverse_preorder(node->left);
	traverse_preorder(node->right);
#ifndef TWO_DIMENSION
	traverse_preorder(node->up);
	traverse_preorder(node->down);
#endif
}
コード例 #4
0
int main2() {
	Node *n110 = make_node(110, NULL, NULL);
	Node *n125 = make_node(125, n110, NULL);
	Node *n175 = make_node(175, NULL, NULL);
	Node *n150 = make_node(150, n125, n175);
	Node *n25  = make_node(25,  NULL, NULL);
	Node *n75  = make_node(75,  NULL, NULL);
	Node *n50  = make_node(50,  n25,  n75);
	Node *n100 = make_node(100, n50,  n150);
	Node *root = n100;
	
	int sum = 0;
	traverse_preorder(root, print_node, &sum);
}
コード例 #5
0
ファイル: mirrors.c プロジェクト: luisbg/hhgtg
int
main ()
{
  node *root1 = NULL, *root2 = NULL, *root3 = NULL;
  int nodes1[6] = { 1, 2, 3, 4, 5, 6 };
  int nodes2[6] = { 8, 10, 2, 1, 5, 3 };
  int c;

  for (c = 0; c < 6; c++) {
    // printf ("inserting tree 1: %d\n", nodes1[c]);
    insert (&root1, nodes1[c]);
  }

  for (c = 0; c < 6; c++) {
    // printf ("inserting tree 2: %d\n", nodes1[c]);
    insert_reverse (&root2, nodes1[c]);
  }

  for (c = 0; c < 6; c++) {
    // printf ("inserting tree 3: %d\n", nodes2[c]);
    insert (&root3, nodes2[c]);
  }

  printf ("tree 1: \n");
  traverse_preorder (root1);
  printf ("\ntree2: \n");
  traverse_preorder (root2);
  printf ("\ntree3: \n");
  traverse_preorder (root3);
  printf ("\n");

  printf ("are 1 and 2 mirrors? %s\n", is_mirror (root1, root2) ? "yes" : "no");
  printf ("are 1 and 3 mirrors? %s\n", is_mirror (root1, root3) ? "yes" : "no");

  destroy_tree (root1);
  return 0;
}
コード例 #6
0
ファイル: btree.c プロジェクト: yangyraaron/datastructure
BTREE_ID_t BTREE_traverse_tree(BTREE_ID_t tree,BTREE_TRAVERSE_ORDER_e_t order,BTREE_VISIT_PROC_p_t visit_proc){
    
    switch (order) {
        case BTREE_PREORDER:
            traverse_preorder(tree->root, visit_proc);
            break;
            case BTREE_INORDER:
            traverse_inorder(tree->root, visit_proc);
            break;
            case BTREE_POSTORDER:
            traverse_postorder(tree->root,visit_proc);
            break;
            
        default:
            CDA_ASSERT(CDA_FALSE);
            break;
    }
    
    return tree;
}
コード例 #7
0
void traverse_preorder(Node *node, void (*func)(Node *node, void *context), void *context) {
	if (!node) return;
	func(node, context);
	traverse_preorder(node->left, func, context);
	traverse_preorder(node->right, func, context);
}