Beispiel #1
0
void KTREE::levelorder_traversal()
	{
														//level order
		int m=0;
		int f=1;
			while (f==1)
			{
				f=levelorder_traversal(top,m,0);
				m++;
			}		
			
		cout<<endl;
	}
Beispiel #2
0
  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);

  }
Beispiel #3
0
int KTREE::levelorder_traversal(TNode* node,int m,int level)
	{
		int f=0;
		int con=0;
		if (level==m)
		{
			cout<<node->getElement()<<" "; 
			return 1;
		}
		if (level<m) 
		{
			for (int i=0;i<MAX;i++)
			if (node->getChild(i)!=0) 
			{
				f=levelorder_traversal(node->getChild(i),m,level+1);
				if (f==1) 
					con=1;
			}
			
		}
		return (con==1?1:0);
	}
Beispiel #4
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;
}