漫画算法:小灰的算法之旅笔记(2)

作者: dino.ma 分类: PHP,杂谈 发布时间: 2019-10-12 19:24

树的定义

树(tree)和n(n >= 0)个节点的有限级。当n=0时,称为空数。在任意一个非空树中,有如下特点

1、有且仅有一个特定的称为根的节点。

2、当n>1时,其余节点可分为m(m>0)个互不相交的有限集,每一个集合本身又是一个数,并成为根的子树。

什么是满二叉树

一个二叉树的所有非叶子节点都存在左右孩子,并且所有叶子节点都在同一层级上,那么这个树就是满二叉树。


什么是完全二叉树

对一个有n个节点的二叉树,按层级顺序编号,则所有节点的编号从1到n。如果这个树所有节点和同样深度的满二叉树的编号为从1到n的节点位置相同,则这个二叉树为完全二叉树。

什么是二叉查找树(二叉排序树)

在基于二叉树的基础上

如果左子树的节点不为空,那么左子树上所有的节点均小于根节点的值。

如果右子树的节点不为空,那么右子树上所有的节点均大于根节点的值。

左右子树也都是二叉查找树。


对于一个节点分布相对均衡的二叉查找树来说,如果节点总数是n,那么搜索节点的时间复杂度就是O(logn)和树的深度一样。(与二分查找相似)

github地址:https://github.com/dino-ma/algorithm

发表评论

电子邮件地址不会被公开。 必填项已用*标注