建立多叉树问题的困惑!!

caulxjxys 2011-07-14 05:23:53
有各个顶点的关系如下(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
}
}
}
}
...全文
111 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
naogen 2011-07-14
  • 打赏
  • 举报
回复
左孩子
qq120848369 2011-07-14
  • 打赏
  • 举报
回复
左孩子,右兄弟表示法。
changkai2009 2011-07-14
  • 打赏
  • 举报
回复
同样有个困惑问题:C++如何实现动态加载flash

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧