数据结构:孩子兄弟表示法

#include
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写出看到并不有关所以。不展开

你可能感兴趣的:(数据结构,图论,算法)