数据结构 - 树

1. 树的存储结构

1)双亲孩子表示法

先将所有结点放到数组中,数组元素有三个域:data, parent(父节点)下标,firstchild(指向其第一个孩子的指针)。

child是在结点数组中的下标,next指向parent下一个孩子,最后一个孩子的next的域为空。

 

2)孩子兄弟表示法

firstchild指向第一个孩子,rightsib指向第一个右兄弟

这样表示将一个复杂的树变成了一棵二叉树

 

2.二叉树的性质

1.第i层最多有 2^{i-1}个结点。

2.二叉树整棵树最多有2^{k}-1个结点。(等比数列求和)

3.度二2的结点数设为n2,度为1的结点数设为n1,度为0的节点数设为n0,总的结点数设为n

1+2n2+n1= n

n2+n1+n0=n

---->n0=n2+1

 

3.完全二叉树

从满二叉树的尾部连续摘掉一些元素即的完全二叉树

完全二叉树的深度为:

因为k层的完全二叉树最多有2^{k}-1个结点,最少结点数大于2^{k-1}-1

2^{k}-1<=n<2^{k-1}-1

 

4.二叉树的遍历

1)前序(中左右)

2)中序(左中右)

3)后序  (左右中)

规律:

前序+中序可以重构二叉树

后序+中序可以重构二叉树

前序+后序不可以重构二叉树(无法确定结点是左子树还是右子树的,只能确定根结点)

 

5. 线索二叉树

二叉树一共有2n个指针域,有n-1个指针指向了结点,那么共有n+1个结点无用,现在线索二叉树废物利用,如果lchild=null,那么让他指向pre结点,如果rchild=nulll让他指向next结点。这个过程在第一次遍历时完成,这样之后遍历就洁身时间。

结点结构,rtag=1时rchild才指向后继结点,利用这点可以顺序访问结点,不用递归。

 

6.树和二叉树的转换

1.将每个结点和其兄弟连接起来

2.只保留父节点和第一个孩子之间的连线 

 

7.哈夫曼树的构造

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值