有根树和二叉树


有根树

有根树G是一个连通的无环图,它有一个特殊的节点称为树的根,并且每条边都直接或间接地起源于根。有序有根树是有根树,其中每个内部顶点的子节点是有序的。如果一个有根树的每个内部顶点最多有m个子节点,则称之为m叉树。如果一个有根树的每个内部顶点恰好有m个子节点,则称之为完全m叉树。如果m = 2,则有根树称为二叉树。

二叉搜索树

二叉搜索树是一种满足以下性质的二叉树:

  • 顶点V的左子树中的X,Value(X) ≤ Value(V)
  • 顶点V的右子树中的Y,Value(Y) ≥ Value(V)

因此,内部节点V的左子树的所有顶点的值都小于或等于V,内部节点V的右子树的所有顶点的值都大于或等于V。从根节点到最深节点的链接数是二叉搜索树的高度。

示例

在BST中搜索键的算法

BST_Search(x, k)
if ( x = NIL or k = Value[x] )
   return x;
if ( k < Value[x])
   return BST_Search (left[x], k);
else
   return BST_Search (right[x], k)

二叉搜索树的复杂度


平均情况最坏情况
空间复杂度O(n)O(n)
搜索复杂度O(log n)O(n)
插入复杂度O(log n)O(n)
删除复杂度O(log n)O(n)

更新于:2019年8月26日

4K+ 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告