树定义spa
专业定义.net
1,有且只有一个称为根的节点指针
2,有若干个互不相交的子树,这些子树自己也是一棵树blog
通俗定义内存
1,树是有节点和边组成ci
2,每一个节点只有一个父节点,但能够有多个直接点get
3,但有一个节点例外,该节点没有父节点,此节点称为根节点博客
专业术语it
节点 父节点 子节点二叉树
子孙 堂兄弟
深度:
从根节点到最底层节点的层数称之为深度
根节点是第一层
叶子节点:
没有子节点的节点
非终端节点
实际就是非叶子节点
度
子节点的个数称为度
树的分类
通常树
二叉树
森林
通常树:任意一个节点的子节点的个数都不受限制
二叉树:
任意一个节点的子节点个数最多两个,且子节点的位置不可更改
分类:
通常二叉树
满二叉树:
在不增长树的层数的前提下,没法再多添加一个节点的二叉树就是二叉树
彻底二叉树
若是只是删除满二叉树最底层最右边的连续若干个节点,这样造成的二叉树就是彻底二叉树
森林:n个互不相交的树的集合
树的存储
二叉树的存储
连续存储【彻底二叉树】
书上 性质4——性质5
优势:
查找某个节点的父节点和子节点(也包括有没有子节点)速度很快
缺点:
耗用内存空间过大
链式存储
比较简单,耗费内存也少,随机分布,依靠指针域进行连接
通常树的存储
双亲表示法(求父节点方便)
将元素的父节点的下标保存
孩子表示法(求子节点方便)
保存子节点的指针域
双亲孩子表示法(求父节点,求子节点都很方便)
1,保存父节点下标
2,保存子节点指针
二叉树表示法
把一个普通树转化成二叉树来存储,
具体转换方法:
设法保证任意一个节点的左指针域指向他的第一个孩子,右指针域指向他的兄弟
只要能知足此条件,就能够将一个普通树转化成二叉树
一个普通树转化成的二叉树,必定没有右子树。当看到一个二叉树的时候,不必定就真的是一课二叉树,有多是普通书转化而来。
森林的存储
森林的存储和通常树转化二叉树方法是同样的。先把森林转化为二叉树,在存储二叉树
学PHP的小蚂蚁 博客 http://my.oschina.net/woshixiaomayi/blog