1 Star 0 Fork 0

DingJianhui / go-tree

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

术语


节点的度: 一个节点含有的子树的个数称为节点的度
树的度 : 一棵树中,最大的节点的度称为树的度
叶节点或终端节点:度为零的节点
非终端节点或分支节点: 度不为零的节点
父亲节点或父节点: 若一个节点含有子节点,则这个节点称为其子节点的父节点
孩子节点或子节点:一个节点含有的子树的根节点称为该节点的子节点
兄弟节点: 具有相同父节点的节点互称为兄弟节点
节点的层次: 从根节点开始,根为第一层,根的子节点为第二层,以此类推
深度:对于任意节点n, n的深度为从根到n的唯一路径长,根的深度为0
高度: 对于任意节点n,n的高度为从n到一片树叶的最长路径厂,所有树叶的高度为0
堂兄弟节点:父节点在同一层的节点互称堂兄节点
子孙: 以某节点为根的子树中任一节点都称为该节点的子孙
森林:由m(m>0)颗互不相交的树的集合称为森林
- 无序树

- 有序树

- 二叉树

- 完全二叉树

- 满二叉树

- 平衡二叉树

- 排序二叉树

- 霍夫曼树

- B树

二叉查找树|二叉搜索树|二叉排序树(binary search tree)

    1. 动态创建节点
    2. 搜索结点
    3. 搜索父节点
    4. 遍历
        1) 先序 根-左-右
        2) 中序 左-根-右
        3) 后序 左-右-根
    5. 二叉树的深度
    6. 查找最大值和最小值
    7. 删除节点
        1) 删除没有子节点的节点 
        2) 删除有一个子节点的节点 
        3) 删除有两个子节点的节点
        3) 删除根节点
    8. 二叉树的效率
      一颗满树,每层节点数大概为2的n-1幂方,那么最底层的节点个数比树的其它节点数多1,因此,查找、插入或删除节点的操作大约有一半都需要找到底层的节点,另外四分之一的节点在倒数第二层,依次类推。
      总共N层共有2n-1个节点,那么时间复杂度为O(logn),底数为2。
      在有1000000 个数据项的无序数组和链表中,查找数据项平均会比较500000 次,但是在有1000000个节点的二叉树中,只需要20次或更少的比较即可。
      有序数组可以很快的找到数据项,但是插入数据项的平均需要移动 500000 次数据项,在 1000000 个节点的二叉树中插入数据项需要20次或更少比较,在加上很短的时间来连接数据项。
      同样,从 1000000 个数据项的数组中删除一个数据项平均需要移动 500000 个数据项,而在 1000000 个节点的二叉树中删除节点只需要20次或更少的次数来找到他,然后在花一点时间来找到它的后继节点,一点时间来断开节点以及连接后继节点。
      所以,树对所有常用数据结构的操作都有很高的效率。
      遍历可能不如其他操作快,但是在大型数据库中,遍历是很少使用的操作,它更常用于程序中的辅助算法来解析算术或其它表达式。



空文件

简介

go语言练习-二叉树|二叉查找树 展开 收起
Go
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
Go
1
https://gitee.com/dingjianhui/go-tree.git
git@gitee.com:dingjianhui/go-tree.git
dingjianhui
go-tree
go-tree
master

搜索帮助