有根树的存储结构

顺着昨天的讲,我来讲有根树,存储结构。

一、父亲表示法,一般用来查找父亲,即查找根节点。但他很难找孩子。

->代码的简略:

struct tree{

  int fat,data;//fat是father,即父亲结点

}a[1050];//结点总数视为1000个


二、相对应的,儿子表示法,即一个链表式的结构

这个比较用于表示一棵树,便于向下钻。

->代码:

typedef struct tree;//提前声明,不然会有问题

typedef tree *tr;//还是要声明一下的

struct tree{

  int data;//值

  tr a[10];//儿子(默认度为10)

};

tr t;//根结点


三、父亲孩子表示法,即两者结合体

->代码:

typedef struct tree;//提前声明,不然会有问题

typedef tree *tr;//还是要声明一下的

struct tree{

  int data;//值

  tr a[10];//儿子(默认度为10)

  tr fat;//fat是father,即父亲结点

};

tr t;//根结点


四、孩子兄弟表达法

挺少用的,这个是确认第一个儿子,第一个兄弟。

->代码:

typedef struct tree; //提前声明,不然会有问题

typedef tree *tr; //还是要声明一下的

struct tree{

  int data; //值

  tr fc; //第一个儿子(first child)

  tr bro;//bro是brother,即下一个兄弟结点

};

tr t;//根结点


五、邻接矩阵

这其实是图论的表示法,但这也可以用,就只是表示两结点间的关系。

这是以判断是否为父子关系,因为若要找到这个结点,并确认data,就很烦了,而且还要判断,就挺不舒服,所以用邻接矩阵,用空间换时间。


六、邻接表

这其实也是图论算法,主要用来确定儿子、叶子的,可以适当用儿子表示法代替,两者除了空间不一,其他是等价的。


今天也就到这了,每天更新500字的知识,或者一千字的代码,手也是挺累的。加油,明天见。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容