#include<iostream>
using namespace std;
//定义树的结构体
typedef struct CSNode{
char data; //结点值
struct CSNode *firstchild, *nextsibling; //指向第一个孩子结点和下一个兄弟结点的指针
}CSNode, *CSTree;
//创建孩子兄弟树
void CreateCSTree(CSTree &T){
char ch;
cin >> ch;
if(ch == '#'){
T = NULL;
}
else{
T = new CSNode;
T->data = ch;
CreateCSTree(T->firstchild);
CreateCSTree(T->nextsibling);
}
}
//先序遍历孩子兄弟树
void PreOrderTraverse(CSTree T){
if(T){
cout << T->data << " ";
PreOrderTraverse(T->firstchild);
PreOrderTraverse(T->nextsibling);
}
}
//后序遍历孩子兄弟树
void PostOrderTraverse(CSTree T){
if(T){
PostOrderTraverse(T->firstchild);
cout << T->data << " ";
PostOrderTraverse(T->nextsibling);
}
}
int main(){
CSTree T;
CreateCSTree(T);
cout << "先序遍历结果为:";
PreOrderTraverse(T);
cout << endl;
cout << "后序遍历结果为:";
PostOrderTraverse(T);
cout << endl;
return 0;
}
孩子兄弟表示法是一种二叉树的存储结构,它使用二叉链表来表示树。每个节点包括三个部分:结点值、指向结点第一个孩子结点的指针,及指向结点下一个兄弟结点的指针。这种表示法可以很好地解决一些树的操作,如遍历、查找等问题。
这个为AI写出看到并不有关所以。不展开