数据结构 —— 树

二叉树与线索二叉树详解
本文详细介绍了树的基本概念,包括定义、度、层等,并对比了树与二叉树的区别。深入探讨了二叉树的存储表示、遍历方法及二叉树的复制、比较等内容。此外,还特别讲解了线索二叉树的概念、实现思路及其在遍历过程中的应用。

1、定义:递归定义 树和子树

2、度:结点的度:该节点的子树个数

       树的度:树中所有结点度的最大值

3、层:结点的层:根节点为第一层

       树的深度或高度:树中所有结点的最大层号

4、树的存储表示:

1)列表存储表示:根节点信息在最前面,随后是该节点的子树组成的列表 egP190

2)左儿子右兄弟存储表示

3)2叉树存储表示:左儿子右兄弟顺时针旋转45°,任何树都可以表示成二叉树。

5、二叉树:

1)任意给定结点的度都不会超过二。

2)区分左子树和右子树。

6、树和二叉树的区别:

1)树至少要含有一个结点,二叉树可以为空。

2)可以通过子树的顺序来区分不同的二叉树,不能这样区分树。

7、两种特殊二叉树:倾斜树和完全二叉树

8、满二叉树和完全二叉树的区别

9、二叉树的存储表示:

1)数组存储表示:浪费存储空间

   最差的情况:深度为k的倾斜树需要的存储空间大小为2^k-1,仅有k个被实际占用。

2)链表存储表示:方便插入和删除

10、二叉树的遍历:

1)约定遍历右子树之前先遍历左子树:

LVRVLRLRV,分别叫做中序遍历,先序遍历和后序遍历。

2)迭代的中序遍历

3)层序遍历

11、二叉树的其它操作:

二叉树的复制、判断二叉树相等

12、线索二叉树:

1为了加快查找二叉树中某节点的前驱和后继的速度

2)在2n条链的二叉树中,有n+1个是空链,用它们指向二叉树中其他节点,称为线索。

3实现思路:按某种次序遍历二叉树,在遍历过程中用线索取代空指针即可。

4)中(前、后)序遍历线索二叉树:寻找结点的前驱后继 简化。

5)向线索二叉树中插入结点。

感觉线索二叉树有点鸡肋,这些事情似乎用普通的二叉树就可以做,因为要得到线索二叉树就要先来一遍相应的搜索来得到线索,这样的话,完全可以在这一遍搜索的时候维护两个数组pre[],nxt[],维护每个结点的前驱和后继,没有的设为inf或者不会出现的值。相应的需要插入节点时也可以依照线索二叉树的方法来修改这两个数组的值。而有了这两个数组,同样可以简化该二叉树相应的搜索。

 

附代码:

二叉树的创建、五种遍历、复制和比较

线索树的创建和中序遍历

 

参考:

数据结构

线索二叉树:http://www.cnblogs.com/mcgrady/p/3320413.html

 

转载于:https://www.cnblogs.com/icode-girl/p/5998278.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值