Wypełnienie drzewa w celu otrzymania permutacji.

0

Witam.
Mam taki problem. Chciałbym otrzymać takie drzewo jak na tym rysunku:
user image

W jaki sposób je wypełnić? Jakoś nie mam do tego głowy, na razie napisałem coś takiego, ale funkcja fillTree() nie działa prawidłowo. Ktoś ma jakieś propozycje?
Kod:

#include <iostream>
#include <vector>

#define N 3

using namespace std;

class Tree {
	struct Node {
		int value;
		vector<Node*>children;

		Node(int _value) {
			value = _value;
		}
	};

public:
	Node *root;
	Tree() {
		root = new Node(0);
	}
	~Tree() {}

	void fillTree(Node *node, int p, int k) {
		int index = 0;
		for (int i = p; i < k; i++) {
			node->children.push_back(new Node(i + 1));
			fillTree(node->children[index], i + 1, k);
			index++;
		}
	}
};

int main() {

	Tree *tree = new Tree();

	tree->fillTree(tree->root, 0, N);

	return 0;
}
 
0

Niestety nie mogę używać tego typu funkcji. Piszę to drzewo właśnie po to aby wygenerować permutacje, przeglądając je później "w głąb".

0

Właśnie tak działa ta funkcja, daje ci jedną gałąź w głąb - po czym kolejną itd.

1 użytkowników online, w tym zalogowanych: 0, gości: 1