Java数据结构学习笔记——20 树
2020-01-15 11:35
1191 查看
树
定义:树是一个n(n>=0)个结点的有序合集
名词理解:
结点:指树中的一个元素;
结点的度:指结点拥有的子树的个数,二叉树的度不大于2;
数的度:指树中的最大结点度数;
叶子:度为0的结点,也称为终端结点;
高度:叶子节点的高度为1,根节点高度最高;
层:根在第一层,以此类推;
二叉树
定义:
由一个结点和两颗互不相交、分别称为这个根的左子树和右子树的二叉树构成(递归定义)
二叉树的性质:
1:二叉树的第i层上至多有2^(i-1)个结点
2:深度为k的二叉树,至多有2^k-1个结点
满二叉树:叶子节点一定要在最后一层,并且所有非叶子节点都存在左孩子和右孩子;
最特别的二叉树:完全二叉树:从左到右、从上到下构建的二叉树;
完全二叉树的性质:
1:结点 i 的子结点为2i 和 2i+1(前提是都小于总结点数)
2:结点 i 的父结点为 i/2
二叉树的遍历(要有递归的思想!!!):
1:先序遍历:根->左子树->右子树(先序)
2:中序遍历:左子树->根->右子树(中序)
3:后序遍历:左子树->右子树->根(后序)
这三种遍历方法只是访问结点的时机不同,访问结点的路径都是一样的,时间和空间复杂度皆为O(n)
二叉树的存储结构:
1:顺序存储(只适用于完全二叉树)——可以用于排序算法中的堆排序
2:链式存储(最普遍的存储方式)——由于结点可能为空,所以会比较浪费空间
如果有n个节点,则有2n个left、right指针,但是用到的只有n-1个指针
3:线索存储(改进的方法)
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- 设计模式(20)--观察者模式
- 1008 数组元素循环右移问题 (20 分)
- Python内置函数(20)——exec
- 1023. 组个最小数 (20)
- 1035. Password (20)
- 【PAT】1081. Rational Sum (20)
- 1005. Spell It Right (20)
- 7-2 水仙花数 (20 分)
- 【PAT甲级】1054. The Dominant Color (20)
- 1029. 旧键盘(20)
- PAT 1019 General Palindromic Number (20)
- iOS中 FMDB第三方SQLite数据库 UI_20
- 利用Random类产生5 个1-30之间(包括1和20)的随机整数。
- 7-8 哈利·波特的考试 (20 分)
- 20监控工具
- PAT (Basic Level) Practise (中文) 1007. 素数对猜想 (20)
- fedore 20 安装lwqq
- 安装 Kali Linux 后需要做的 20 件事
- 1012. 数字分类 (20)
- 习题8-5 使用函数实现字符串部分复制 (20 分)