用凹入法输出一个树(注意:不是二叉树)

来源:百度知道 编辑:UC知道 时间:2024/07/06 16:54:45
树是以孩子兄弟表示法存储的,即以二叉树链表作为树的存储结构。链表中结点 的两 个指针分别指向该结点 的第一个孩子结点和下一个兄弟结点
比如

R(a(b,c),d(e,f,g),h)

它的存储形式是:
R(a(b(c),d(e(f(g)),h)))

typedef struct treenode
{
char data;
struct treenode *brother, *child;
}TreeNode;

这是结点的定义
child指向这个结点的第一个孩子结点,brother指向这个结点 的下一个兄弟
设计是以第一个孩子作为链表的表头,所有的孩子形成一个兄弟链表

就是写这个void ShowTree(TreeNode *root)

不知道说明白了没,希望有高人帮助一下,谢谢,合适的分都给你了(再加255分)
谢谢

#include <iostream>
using namespace std;
typedef struct treenode
{
char data;
struct treenode *brother, *child;
}TreeNode;
void ShowTree(TreeNode *root)
{
int i;static int deep=0;
if(root==NULL) {printf("\n");return;}
for(i=0;i<deep;++i) printf(" ");
printf("%c\n",root->data);
++deep; ShowTree(root->child);
--deep; ShowTree(root->brother);
}
int main()
{
TreeNode *R,*a,*b,*c,*d,*e,*f,*g,*h;
R=new TreeNode;
a=new TreeNode;
b=new TreeNode;
c=new TreeNode;
d=new TreeNode;
e=new TreeNode;
f=new TreeNode;
g=new TreeNode;
h=new TreeNode;
//R
R->data='R';
R->child=a;
R->brother=NULL;
//a
a->data='a';
a->child=b;
a->brother=d;
//b
b->data='b';
b->child=NULL;