zoukankan      html  css  js  c++  java
  • 证明二叉查找树所有节点的平均深度为O(logN)

    数据结构与算法分析(c语言描述)第4章 P78

    概念一:一棵树所有节点的深度和称为内部路径长

    令D(N)为一棵有N节点的树的内部路径长么,即有D(1)=0,

    设一棵树的左子树的内部路径长为D(i),则右子树的内部路径长为D(N-i-1)(右子树节点个数=N-左子树节点个数-根节点)

    综上:

    D(N)=D(i)+D(N-I-1)+N-1 (在原树内,左子树与右子树所有节点的深度+1,总共深度增加N-1)

    如果所有子树大小都等可能出现(对于左子树或右子树来说,大小在0—N-1之间浮动,比如:左子树的大小最小为0,最大为N-1,这其中任何值都是等可能出现的

    则D(i)与D(N-i-1)的平均内部路径长为(1/N)∑D(j) (上标=N-1,下标=0)

    综上:

    D(N)=(2/N)*∑D(j)+N-1

    再根据p185页化简可得:D(N)=O(logN)

    所以,二叉查找树所有节点的平均深度为O(logN)

    由此引申可得二叉查找树Find的运行时间为O(logN),Insert,Delete操作的核心步骤皆为Find,所以,Find,Insert,Delete的平均运行时间为O(logN)

  • 相关阅读:
    268. Missing Number
    217. Contains Duplicate
    189. Rotate Array
    Two Sum II
    122. Best Time to Buy and Sell Stock II
    169. Majority Element
    C# ConfigurationManager不存在问题解决
    C# sqlhelper
    C#基础
    数据库事务日志已满的解决办法
  • 原文地址:https://www.cnblogs.com/weilen/p/8295344.html
Copyright © 2011-2022 走看看