数据结构 —— 树

一、树的结构表示


1.1. 双亲表示法

除去根节点,树中每个节点都有且仅有一个双亲节点:

该表示法在寻找父节点时:O(n) = 1;子节点时:O(n) = n;兄弟节点时:O(n) = n。

1.2. 孩纸表示法

除去叶节点,树中每个节点都有孩纸,且孩纸中总是最少有一个老大,老大有小弟时,总有一个和他最相近的,小弟也有小弟...

该表示法在寻找父节点时:O(n) =n;子节点时:O(n) =1;兄弟节点时:O(n) =1

1.3. 兄弟表示法

对于任意一个节点,他有儿子的话,那就只有一个大儿子,他有弟弟的话,就只有一个大弟弟。

这种方法将普通的树转化为一棵二叉树。

该表示法在寻找父节点时:O(n) =n ;子节点时:O(n) =1 ;兄弟节点时:O(n) =1

上述三种方法都可以添加其他新指针域来减少时间复杂度。


二、二叉树(Binary Tree)


2.1. 定义


二叉树是有最多两个子树构成,并且严格区分左子树和右子树。

2.2. 特殊二叉树


斜树、满二叉树、完全二叉树。

2.3. 性质


2.3.1. 在二叉树的第i层上最多有2^(i-1)个节点(i >= 1)

2.3.2. 深度为k的二叉树最多有2^k -1 个节点(k >= 1)

2.3.3. 对于一颗二叉树,如果其叶子节点数为n,度为2的节点数为m,则n = m + 1(度:表示该节点子节点个数)

2.3.4. 略略略.

2.3.5. 存储结构


2.4. 线索二叉树

对于一个二叉树而言,必然会存在有些节点没有左子树或者右子树,而这些节点的数据结构中却仍然占据了存储空间,如何把这些闲置的存储空间利用起来就是线索二叉树所解决的问题。

线索二叉树将指向null的左子树指向该节点的前驱,指向null的右子树指向该节点的后继。

同时添加两个0 1 标志位,当标志位为0时,该节点指向其子树,否则指向其前驱或后继。


定义:指向前驱和后继的指针称为线索,加上线索的二叉链表称为线索链表,相应的二叉树就为线索二叉树(Threaded Binary Tree)。



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值