赞
踩
树, 非线性表结构
树有三个概念:
高度从下向上数, 起点是0
深度从上向下数, 起点是0
层数从上向下数, 起点是1
每个节点最多两个叉
有两种特殊二叉树:
满二叉树, 除了叶子节点, 每个节点都有左右两个子节点
完全二叉树, 叶子节点都在最底下两层, 最后一层叶子节点都靠左排列, 且除了最后一层, 其它层节点个数都达到最大
满二叉树是完全二叉树的一种特殊情况
所以一个树是完全二叉树的话, 用数组存储是最节省内存的一种方式, 也是为什么完全二叉树被单拎出来说明的原因.
堆其实就是一种完全二叉树, 最常用的存储方式就是数组
如何打印所有节点, 经典方法有三种:
前序遍历, 对于树中的任意节点来说, 先打印这个节点, 再打印左子树, 最后打印右子树 (todo)
中序遍历, 对于树中的任意节点来说, 先打印左子树, 再打印本身, 最后打印右子树 (todo)
后序遍历, 对于树中的任意节点来说, 先打印左子树, 再打印右子树, 最后打印它本身 (todo)
实际上二叉树的三种遍历, 就是一个递归的过程
遍历的时间复杂度是O(n)
不常用的遍历, 按层遍历 (todo)
也叫二叉搜索树
特点, 支持动态数据集合的快速插入删除, 查找操作
二叉查找树要求, 在树的任意一个节点, 其左子树中的每个节点的值, 都要小于这个节点的值, 而右子树节点的值, 都大于这个节点的值
不同形态的二叉查找树时间复杂度不同, 时间复杂度和树的高度成正比, 也就是O(height)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。