コード例 #1
0
void preorder_traversal(treenode *T){
	if(T==NULL)
		return;
	printf("%d ", T->id);
	preorder_traversal(T->lc);
	preorder_traversal(T->rc);
}
コード例 #2
0
ファイル: TreeTraversalOps.c プロジェクト: tapanavasthi/dsa
void preorder_traversal(struct node* node){
    if(node!=NULL){
    printf("%d ",node->data);
    preorder_traversal(node->left);
    preorder_traversal(node->right);
    }
}
コード例 #3
0
void preorder_traversal(tree_node *node)
{
    if (node != NULL) {
        printf("%d, ", node->data);
        preorder_traversal(node->left);
        preorder_traversal(node->right);
    }
}
コード例 #4
0
void postorder_traversal(struct node * root) 
{
	if (root != NULL) {
		preorder_traversal(root->left);
		preorder_traversal(root->right);
		printf("%d ", root->data);
	}
}
コード例 #5
0
ファイル: avl.c プロジェクト: asabeeh18/PROgrammin
// Function for preorder traversal of Binary Tree
void preorder_traversal(struct node* tree)
{
    if(tree == NULL)
        return;
    printf("\t%d", tree->data);
    preorder_traversal(tree->left);
    preorder_traversal(tree->right);
}
コード例 #6
0
ファイル: 6.c プロジェクト: kgpavan/Master
void preorder_traversal( tree *T )
{
	if(T!=NULL)
	{
		printf("%d ",T->item);
		preorder_traversal( T->left );
		preorder_traversal( T->right );
	}
}
コード例 #7
0
ファイル: binarytree.c プロジェクト: hugh3306/myGitProject
void preorder_traversal(BTreeNode *root) {
	if (root == NULL) {
		return;
	}

	printf("value = %d\n", root->value);
	preorder_traversal(root->left);
	preorder_traversal(root->right);
}
コード例 #8
0
ファイル: heapsort.c プロジェクト: anishkshah/eopi
void preorder_traversal(minHeap *hp, int i) {
    if((2i) < hp->size) {
        preorder_traversal(hp, (2i)) ;
    }
    if((2i+1) < hp->size) {
        preorder_traversal(hp, (2i+1)) ;
    }
    printf("%d ", hp->elem[i].data) ;
}
void preorder_traversal(struct node *root, int *arr, int* i2){
	if (root != NULL && arr != NULL)
	{
		arr[*i2] = root->data;
		(*i2)++;
		preorder_traversal(root->left, arr, i2);
		preorder_traversal(root->right, arr, i2);
	}
}
void preorder_traversal(struct node *root, int *arr, int *index){

	if (root == NULL)
		return;

	arr[*index] = root->data;
	*index = *index + 1;
	preorder_traversal(root->left, arr, index);
	preorder_traversal(root->right, arr, index);

}
コード例 #11
0
ファイル: t_rbtree.c プロジェクト: xuzhixi/ky
// 先序遍历
void preorder_traversal(ky_rbtree_s *root)
{
	int *key;
	int *value;

	if ( root != ky_rbtree_nil )
	{
		key = root->key;
		value = root->value;
		printf( "key: %d value: %d color: %s\n", *key, *value, color_str(root) );
		preorder_traversal(root->left);
		preorder_traversal(root->right);
	}
}
コード例 #12
0
ファイル: 6.c プロジェクト: kgpavan/Master
main()
{
	tree *t;
	t=NULL;
	int i,q,w,flag;
	char c,d;
	while(1)
	{
		scanf("%d",&q);
		c=getchar();
	//	insert(q,&t1);
		if(c=='\n')
			break;
	}
	while(1)
	{
		scanf("%d",&w);
		d=getchar();
		insert(w,&t);
		if(d=='\n')
			break;
	}
	inorder_traversal(t);
	printf("\n");
	preorder_traversal(t);
	printf("\n");
	postorder_traversal(t);
	printf("\n");
	levelprint(t);
	printf("\n");
}
コード例 #13
0
ファイル: ParsedGraph.C プロジェクト: bwelton/mrnet
unsigned int ParsedGraph::preorder_traversal( Node * node )
{
    unsigned int nodes_visited=0;

    if( node->visited() == true ){
        mrn_dbg(1, mrn_printf(FLF, stderr, "%s:%u: Node is own ancestor",
                              node->_hostname.c_str(), node->_local_rank ) );
        error( ERR_TOPOLOGY_CYCLE, UnknownRank, "%s:%u: Node is own ancestor",
               node->_hostname.c_str(), node->_local_rank );
        _cycle_free=false;
        return 0;
    }
    else{
        node->visit();
        nodes_visited++;

        if(node->_children.size() == 0){
            return nodes_visited;
        }
    }

    for(unsigned int i=0; i<node->_children.size(); i++){
        nodes_visited+=preorder_traversal(node->_children[i]);
    }

    return nodes_visited;
}
void preorder(struct node *root, int *arr){
	
	if (arr == NULL)
		return;
	
	int i=0;
	preorder_traversal(root, arr, &i);
}
コード例 #15
0
string CBinarySearchDictionary::preorder_traversal(Node *pNode)
{
	string strValue = "";
	string strLeft = "";
	string strRight = "";

	if (pNode != NULL)
	{
		strLeft = preorder_traversal(pNode->pLeft);
		strRight = preorder_traversal(pNode->pRight);

		strValue = pNode->strNameValue + "\t" + strLeft + "\t" + strRight;
	}
	

	return strValue;
}
コード例 #16
0
ファイル: ktree.cpp プロジェクト: varvarasDim/DataStructures
void KTREE::preorder_traversal(TNode* node)
	{
			cout <<" "<<node->getElement();
			for (int i=0;i<MAX;i++)
				if (node->getChild(i)!=0) 
				{
					cout <<" ";
					preorder_traversal(node->getChild(i));
				}
			
			
	}
コード例 #17
0
ファイル: ParsedGraph.C プロジェクト: bwelton/mrnet
bool ParsedGraph::validate()
{
    unsigned int visited_nodes = preorder_traversal( _root );
    if( visited_nodes != _nodes.size() ) {
        mrn_dbg(1, mrn_printf(FLF, stderr, "Failure: "
                              "visited nodes(%d) != total nodes(%d)!\n",
                              visited_nodes, _nodes.size() ));
        error( ERR_TOPOLOGY_NOTCONNECTED, UnknownRank, "parsed graph not connected" );
        _fully_connected = false;
    }

    fflush(stdout);
    return ( _cycle_free && _fully_connected );
}
コード例 #18
0
ファイル: ktree.cpp プロジェクト: varvarasDim/DataStructures
void KTREE::preorder_traversal()
	{
		TNode *tmp;													//pre order
			tmp=top;
			if (top==0) 
				cout <<"empty tree !!!"<<endl;
			else
			{	
				cout <<tmp->getElement()<<" ";
				for (int i=0;i<MAX;i++)
					if (top->getChild(i)!=0) 
						preorder_traversal(top->getChild(i));				
			}
		cout<<endl;
	}
コード例 #19
0
ファイル: main.c プロジェクト: bcho/homework
int main()
{
    char msg[] = " deadbeef";
    binary_tree_t t = create_tree(msg, 8);

    printf("%d", tree_height(t));
    sep;

    preorder_traversal(t, print_node);
    sep;
    postorder_traversal(t, print_node);
    sep;
    inorder_traversal(t, print_node);

    return 0;
}
コード例 #20
0
ファイル: test_tree.cpp プロジェクト: nuggetwheat/study
  void test_tree() {
    vector<char> output;
    Node<char> *tree = populate_test_tree();

    // level-order
    output.clear();
    levelorder_traversal(tree, output);
    assert(output == expected_output_levelorder);

    // pre-order
    output.clear();
    preorder_traversal(tree, output);
    assert(output == expected_output_preorder);

    // in-order
    output.clear();
    inorder_traversal(tree, output);
    assert(output == expected_output_inorder);

    // post-order
    output.clear();
    postorder_traversal(tree, output);
    assert(output == expected_output_postorder);

    // pre-order (non-recursive)
    output.clear();
    preorder_traversal_nonrecursive(tree, output);
    assert(output == expected_output_preorder);

    // in-order (non-recursive)
    output.clear();
    inorder_traversal_nonrecursive(tree, output);
    assert(output == expected_output_inorder);

    // post-order (non-recursive)
    output.clear();
    postorder_traversal_nonrecursive(tree, output);
    assert(output == expected_output_postorder);

  }
コード例 #21
0
ファイル: binarytree.c プロジェクト: hugh3306/myGitProject
int main(int argc, const char *argv[])
{
	BTreeNode *root = NULL;	
	int operation = 0;
	int value = 0;


	while (operation != -1) {
		printf("operations\n");
		printf("1 : insert a value\n");
		printf("2 : show the tree\n");
		printf("3 : breadth_first_traversal\n");
		printf("0 : exit\n");
		scanf("%d", &operation);
		switch (operation) {
			case 1:
				printf("input a value to insert:");
				scanf("%d", &value);
				insert_value(&root, value);
				break;
			case 2: {
				printf("do preorder_traversal\n");
				preorder_traversal(root);
				printf("end preorder_traversal\n");
				break;
				}
			case 3:
				printf("do bfs\n");
				breadth_first_traversal(root);
				printf("end do bfs\n");
				break;
			default:
				operation = -1;
				break;
		}
	}
	
	return 0;
}
コード例 #22
0
int main()
{
	char choice[100];
	char choice2[100];
	int element;
	struct node * root = NULL;

	do {
		scanf("%s", choice);

		if (!strcmp(choice, "preorder\0")) {
			preorder_traversal(root);
			printf("\n");
		} else if (!strcmp(choice, "postorder\0")) {
			postorder_traversal(root);
			printf("\n");
		} else if (!strcmp(choice, "inorder\0")) {
			inorder_traversal(root);
			printf("\n");
		} else if (!strcmp(choice, "insert\0")) {
			scanf(" %d", &element);
			tree_insert(&root, element);
		} else if (!strcmp(choice, "successor\0")) {
			scanf(" %d", &element);
			tree_insert(&root, element);
		} else if (!strcmp(choice, "insert\0")) {
			scanf(" %d", &element);
			tree_insert(&root, element);
		} else if (!strcmp(choice, "delete\0")) {
			scanf(" %d", &element);
			tree_delete(&root, element);
		}				
	} while (strcmp(choice, "exit\0"));

	return 0;
}
コード例 #23
0
static int traverse_dump(struct bitree *tree, TRAVE_DIRECTION dir)
{
	int cnt = -1, depth;
	const char *str = NULL;

	if (!tree)
		goto exit;

	if (dir >= TRAVE_PREORDER && dir < TRAVE_MAX)
		str = TRAVERSE_STRINGS[dir];

	switch (dir) {
	case TRAVE_PREORDER:
		cnt = preorder_traversal(tree->root, visit);
		break;
	case TRAVE_INORDER:
		cnt = inorder_traversal(tree->root, visit);
		break;
	case TRAVE_POSTORDER:
		cnt = postorder_traversal(tree->root, visit);
		break;
	case TRAVE_LEVELORDER:
		cnt = levelorder_traversal(tree->root, visit, &depth);
		fprintf(stdout, "%s: depth:%d\n", str, depth);
		break;
	default:
		break;
	}

	fprintf(stdout, "%s: total %d nodes traversed\n",
			 (str == NULL) ? "N/A" : str , cnt);
	dump_visit_list(TRUE);

exit:
	return cnt;
}
コード例 #24
0
ファイル: avl.c プロジェクト: asabeeh18/PROgrammin
int main()
{
    int choice, counter, flag, num;
    char temp[LIMIT];
    struct node *root = NULL;
    system("clear");
    //root->left        = create_leaf_node(2);
    //root->right       = create_leaf_node(31);
    //root->left->left  = create_leaf_node(14);
    //root->left->right = create_leaf_node(5);
    //root->right->left  = create_leaf_node(44);
    //root->right->right = create_leaf_node(15);    
    do
    {
        // Display Menu for Operation on Binary Tree
        printf("\n This program implements a AVL Tree \n");
        printf("\n 1. Insert an element");
        printf("\n 2. Delete an element");
        printf("\n 3. Search an element");
        printf("\n 4. Perform Inorder Traversal");
        printf("\n 5. Perform Preorder Traversal");
        printf("\n 6. Perform Postorder Traversal");
        printf("\n 7. Display AVL Tree (Level Order)");
        printf("\n 8. Exit");     
        printf("\n Enter your choice(1-8) : ");
        scanf("%s", temp);
        if (strlen(temp) > 1 || atoi(temp) < 1 || atoi(temp) > 8)
        {
            choice = 0;
        }
        else
            choice = atoi(temp);
        memset(temp, 0 , LIMIT);

        switch(choice)
        {
            case 1:
                do
                {
                    flag = 0;
                    printf("\n Enter the integer element to be inserted : ");
                    scanf("%s", temp);
                    for(counter = 0; counter < strlen(temp); counter++)
                    {
                        if (temp[counter] < 48 || temp[counter] > 57)
                        {
                            printf("\n Invalid Data Type Entered .. Please input valid data type ... ");
                            flag = 1;
                            break;
                        }
                    }
                    num = atoi(temp);
                }while(flag == 1);

                root = insert_node(root, num);
                printf("\n Element Inserted");
                break;

            case 2:
                do
                {
                    flag = 0;
                    printf("\n Enter the element to be deleted : ");
                    scanf("%s", temp);
                    for(counter = 0; counter < strlen(temp); counter++)
                    {
                        if (temp[counter] < 48 || temp[counter] > 57)
                        {
                            printf("\n Invalid Data Type Entered .. Please input valid data type ... ");
                            flag = 1;
                            break;
                        }
                    }
                    num = atoi(temp);
                }while(flag == 1);
                
                flag = binary_search(root, num);
                if (flag == 1)
                {
                    root = delete_node(root, num);
                    printf("\n Element Deleted");
                }
                else
                    printf("\n Deletion Element not found");
                break;

            case 3:
                do
                {
                    flag = 0;
                    printf("\n Enter the element to be searched : ");
                    scanf("%s", temp);
                    for(counter = 0; counter < strlen(temp); counter++)
                    {
                        if (temp[counter] < 48 || temp[counter] > 57)
                        {
                            printf("\n Invalid Data Type Entered .. Please input valid data type ... ");
                            flag = 1;
                            break;
                        }
                    }
                    num = atoi(temp);
                }while(flag == 1);
                
                flag = binary_search(root, num);
                if (flag == 1)
                    printf("\n Element Found");
                else
                    printf("\n Element not found");
                break;
                
            case 4:
                printf("\n The Inorder Traversal of Entered Binary Tree is : \n");
                inorder_traversal(root);
                break;
                
            case 5:
                printf("\n The Preorder Traversal of Entered Binary Tree is : \n");
                preorder_traversal(root);
                break;
                
            case 6:
                printf("\n The Postorder Traversal of Entered Binary Tree is : \n");
                postorder_traversal(root);
                break;
                
            case 7:
                level_order_traversal(root);
                break;
                
            case 8:
                break;
                
            default:
                printf("\nInvalid Choice\n");
        }
    }while(choice != 8);  
    return 0;
}
void preorder(struct node* root, int *arr)
{
	int i2 = 0;
	preorder_traversal(root, arr, &i2);
}
コード例 #26
0
void pre_visit(treenode *T){
	printf("result by using preorder traversal: ");
	preorder_traversal(T);
	printf("\n");
}
コード例 #27
0
string CBinarySearchDictionary::preorder()
{
	return preorder_traversal(root);
}
コード例 #28
0
ファイル: t_rbtree.c プロジェクト: xuzhixi/ky
int main()
{
	ky_rbtree_t *rbTree;
	int isQuit = 0;
	int key;
	int value;
	uint8 c;
	int i;

	rbTree = ky_rbtree_new(sizeof(int), sizeof(int), ky_cmp_int);

	srand( time(NULL) );
	for (i=0; i<50; i++)		// 随机插入
	{
		key = rand() % 100;
		value = rand() % 1000;
		ky_rbtree_add( rbTree, &key, &value );
		test_two_red( rbTree->tree );	// 每次插入都进行测试
		black_count( rbTree->tree );
	}
	test_two_red( rbTree->tree );
	printf("黑色路径长度: %d\n", black_count( rbTree->tree ) );
	//printf("################################################\n");
	//preorder_traversal( rbTree->tree );
	//printf("################################################\n\n");

	for (i=0; i<200; i++)		// 随机删除
	{
		key = rand() % 100;
		ky_rbtree_del( rbTree, &key );
		test_two_red( rbTree->tree );	// 每次删除都进行测试
		black_count( rbTree->tree );
	}
	test_two_red( rbTree->tree );
	printf("黑色路径长度: %d\n", black_count( rbTree->tree ) );
	printf("################################################\n");
	preorder_traversal( rbTree->tree );
	printf("################################################\n");

	/*
	while (1)
	{
		printf("\n\n1. add\n2. mod\n3. del\n4. show data\n5. quit\nplease input your choise: ");
		scanf("%d", &c);
		switch ( c )
		{
			case 1:
				printf("please input yout key and value: ");
				scanf("%d %d", &key, &value);	
				ky_rbtree_add( rbTree, &key, &value );
				break;
			case 2:
				printf("please input your key and value: ");
				scanf("%d %d", &key, &value);	
				ky_rbtree_mod( rbTree, &key, &value );
				break;
			case 3:
				printf("please input yout key: ");
				scanf("%d", &key);	
				ky_rbtree_del( rbTree, &key );
				break;
			case 4:
				printf("################################################\n");
				preorder_traversal( rbTree->tree );
				printf("################################################\n");
				break;
			case 5:
				isQuit = 1;
				break;
			default:
				break;
		}

		if ( isQuit == 1 )
		{
			ky_rbtree_release( rbTree );
			break;
		}
	}
	*/

	return 0;
}
コード例 #29
0
ファイル: visitor.cpp プロジェクト: qubitnerd/symengine
void preorder_traversal(const Basic &b, Visitor &v)
{
    b.accept(v);
    for (const auto &p: b.get_args()) preorder_traversal(*p, v);
}