建立多叉树问题的困惑!!
有各个顶点的关系如下(graph.txt):
sa 3
sb 7
sd 4
ac 2
ad 1
bd 2
be 4
dg 13
eg 3
画成关系图就是
S---------A------C
|\ /
| \ /
| \ /
| \ /
B----D
| |
| |
| |
E----G
1)随意选取其中的一个顶点作为树的根
2)各个子顶点要按字母顺序排列 比如去A为根节点 那么子节点就是C, D, S
设计一个建树的接口,想通过顶点之间的关系递归建树,但是想不通什么时候这种递归关系才算截止,不知道各位有什么好的算法,望不吝赐教。
//附上思路
char g_str[10][2] = {
's', 'a',
's', 'b',
's', 'd',
'a', 'c',
'a', 'd',
'b', 'd',
'b', 'e',
'd', 'g',
'e', 'g',
};
char cRoot;
cout << "please input the root of the tree:" << endl;
cin >> cRoot;
//root
node_type *one = new node_type(cRoot);
tree_type::iterator iter(one);
tree_type tr1(one);
create_tree(tr1, cRoot)
{
for ( unsigned int i = 0; i < 10; i++ )
{
//这个判断有问题,判断两个顶点是否已经建立关系,但这样建的树就不全
if ( !Isvisited )
{
//向父节点插入子节点
if ( g_str[i][0] == cRoot )
{
tree_type::iterator child[i] = tr1.insert(iter, g_str[i][1]);
cRoot = child[i].name;
create_tree(tr1, cRoot);
//还有一条语句标识该关系已被访问置Isvisited=true
}
else if ( g_str[i][1] == cRoot )
{
tree_type::iterator child[i] = tr1.insert(iter, g_str[i][0]);
cRoot = child[i].name;
create_tree(tr1, cRoot);
//还有一条语句标识该关系已被访问置Isvisited=true
}
}
}
}