兄弟二叉树简析

一般来说,大学开设的数据结构的课程更偏向于理论,对于具体问题的解决方法需要同学自己去练习掌握。

前几天,山东科技大学的一个高中同学需要做设计,这个设计不是一般意义上的小项目而是一个编程练习,但是需要答辩。问题还是那个很经典的问题–家谱。

设计一个家谱最核心的问题就是家谱的数据结构,毫无疑问,一定是采用树状结构。但是,如果某一个男子有三四个孩子那么这个节点就要有三四个子节点。从解答问题的角度来说,如果每一个节点最多有两个子节点我们才认为这是较好的结构。

于是问题来了:每个节点最多两个子节点,那么如果一个老人有五个孩子,那么该如何表示?

首先我们来了解一下二叉树的分支:二叉树的每个节点的两个分支指向了两个子节点,其实这两个分支的意义并不只是这样,两个分支不但可以代表两个数据,还可以代表两种数据。

举个例子:假设这个家族严格响应国家计划生育的基本国策,每个父亲最多两个孩子,那么每个父节点的两个分支就可以指向他的两个孩子。在这个例子中,两个分支都是指向了父亲的孩子,所以这两个分支表示的是两个不同的数据。如果某一个父亲有了三个孩子,就代表实际情况中出现了一个父节点有三个不同的孩子,很显然这种表示方式不能表示有两个以上孩子的家庭情况。

所以为了能准确地利用二叉树表示多个孩子,采用“兄弟二叉树”来实现。具体实现方法如下。:
每一个节点表示一个家族成员,节点A的两个子节点B和C中,B表示A节点的长子,C表示A节点的年龄最大的弟弟。
当一个父亲有五个儿子的时候,父亲的B节点指向了他的长子,长子的C节点指向次子,次子的C节点指向犬子以此类推。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值