公历 3 月 12 日是一年一度的植树节。旨在宣传保护森林,并动员群众参加植树造林活动。
说到树,程序猿们肯定不陌生,趁着这个植树节到来之时普及一下程序猿们经常遇见的树。
![f6738c6770680229aafbba83f8980589.png](https://i-blog.csdnimg.cn/blog_migrate/2ee26f8bb3264e7425522944970c9b17.jpeg)
转自:五分钟学算法
作者:程序猿小吴和小伙伴 进击的Hello_World
1. 二叉搜索树
定义
二叉搜索树又称二叉查找树,亦称为二叉排序树。设 x 为二叉查找树中的一个节点,x 节点包含关键字 key,节点x 的 key 值记为 key[x] 。如果 y 是 x 的左子树中的一个节点,则 key[y] <= key[x] ;如果 y 是 x 的右子树的一个节点,则 key[y] >= key[x] 。
查找性能
当数据数目为 N,树高度保持 logN 附近。则平均查找长度与 logN 成正比,查找平均时间复杂度为 O(logN) 。 当先后插入的关键字有序时,二叉搜索树退化成单支树结构。此时树高 N 。平均查找长度为 (N+1)/2 ,查找的平均时间复杂度为 O(N) 。
插入性能
插入效率与查找效率一致。
删除性能
删除节点时,若节点为叶子节点,或者节点只有单一子树,则时间复杂度为 O(1) 。若节点既有左子树又有右子树,则需要执行递归过程,对应时间复杂度为 O