[数据结构] 树的几种结构实现

代码实现: 

         文章尾部有图片理解,,结合图片理解效果更佳哦!


//孩子表示法
    // 假设指定树的度
    // 树的指针方式的孩子表示法 图6.5
#define N 3
struct TreeNode
{
	int data;
	struct TreeNode* subs[N];  // 指针数组
};
//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
    // 不知道树的度
    // 顺序表存孩子的指针
struct TreeNode
{
	int data;
	// 顺序表存孩子的指针
	SeqList _sl; // SLDateType -> struct TreeNode*
	// vector<struct TreeNode*> _subs; C++
};
//-=-=-==-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    //不知道树的度,链式实现
#define MAX 50
typedef char datatype;
typedef struct chnode{    //孩子节点
    int child;
    struct chnode *next;
}chnode;
typedef struct {    //树中每个节点的类
    datatype data;
    chnode* firstchild;    //孩子链表的头指针
}node;
typedef struct{
    node treelist[MAX];
    int n;//节点个数
    int root;//根的位置;
}tree;



//双亲表示法
#define MAX 100  //树中节点个数的最大值
typedef char datatype;  //节点的类型
typedef struct node{
    detatype data;
    int parent;    //双亲节点的下标
}node;

typedef struct tree{
    node treelist[MAX]; //存放节点的数组
    int lenth;       //树中实际节点的个数
    int root          //根节点的位置 
}




//孩子兄弟表示法


typedef char datatype;
typedef struct node{
    datatype data;      
    struct node* firstchild;  //第一个孩子
    struct node* rightsibling; //指向其下一个兄弟节点
}

图片理解: 

  • 9
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值