关于三叉树的文本显示问题,用递归实现。。。

Vincent_0705 2013-05-22 04:20:32
最近要写一个项目,要用到三叉树。为了能方便的debug代码,直接显示三叉树的形状。就在网上搜了一下,只找到了二叉树的文本显示。函数如下:

typedef struct Node{
char data;
struct Node * Lchild;
struct Node * Rchild;
}BiTNode,*BiTree;//二叉树节点,二叉链表

执行函数时,为nlayer赋值为1。
void PrintTree(BiTree bt, int nlayer){
if(bt==NULL)
return;
PrintTree(bt->Rchild,nlayer+1);
for(int i=0;i<nlayer;i++)
printf(" ");
printf("%c\n",bt->data);
PrintTree(bt->Lchild,nlayer+1);
}

这个函数显示的结果还是比较满意的,本想把这个程序改一下,用来显示三叉树的,发现很困难,改了两三天都没有成功。哪位大侠指点一下。。?或者指点一下在哪里可以找到相关参考答案或者代码。

typedef struct ternary_tree_node
{
char key; //Notice: not a string!!!
int value;
struct ternary_tree_node * left;
struct ternary_tree_node * mid;
struct ternary_tree_node * right;
}TERNARY_NODE, * TERNARY_TREE;
...全文
121 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Vincent_0705 2013-05-22
  • 打赏
  • 举报
回复
非常感谢你能关注回复我的帖子,如果只是简单的遍历问题,并不复杂。我也运行了你给出的函数,它是将所有节点的值先序遍历输出在同一行上。我想要的是和void PrintTree(BiTree bt, int nlayer)这个函数相似的功能,也就是说,将三叉树显示为下面的形式。(刚才回帖有点问题,自己又无法修改,只好重新回复一下。) b a c f e g
Vincent_0705 2013-05-22
  • 打赏
  • 举报
回复
非常感谢你能关注回复我的帖子,如果只是简单的遍历问题,并不复杂。我也运行了你给出的函数,它是将所有节点的值先序遍历输出在同一行上。我想要的是和void PrintTree(BiTree bt, int nlayer)这个函数相似的功能,也就是说,将三叉树显示为下面的形式。 b a c f e g
引用 1 楼 youyou1912 的回复:
先序遍历
void Print(ternary_tree_node* tree)
{
  if (tree == NULL) return;
  cout << tree->value << " ";
  Print(tree->left);
  Print(tree->mid);
  Print(tree->left);
}
youyou1912 2013-05-22
  • 打赏
  • 举报
回复
笔误: 第7行, tree->right
引用 楼主 u010795795 的回复:
youyou1912 2013-05-22
  • 打赏
  • 举报
回复
先序遍历
void Print(ternary_tree_node* tree)
{
  if (tree == NULL) return;
  cout << tree->value << " ";
  Print(tree->left);
  Print(tree->mid);
  Print(tree->left);
}

70,026

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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