1. 程式人生 > >輕鬆解決不同關鍵字序列構成的二叉排序樹ASL(平均查詢長度)(成功)不同問題

輕鬆解決不同關鍵字序列構成的二叉排序樹ASL(平均查詢長度)(成功)不同問題

打算就說說標題的方法,和介紹一下查詢成功和非成功二叉樹中結點的方法

關鍵字序列1,2,3,4,5構造而得的二叉排序樹

這裡寫圖片描述

ASL=(1,2,3,4,5)/5=3

按關鍵字3,1,2,5,4構造而得的二叉排序樹

這裡寫圖片描述

ASL=(1+2+2+3+3)/5=2.2

很明顯第二種序列的ASL要快。至於二叉排序樹怎麼構成的其實就是根據它的性質(若它的左子樹不空,則左子樹上所有結點的值均小於它的根結點的值,若它的右子樹不空,則右子樹上的所有結點的值均大於它的根結點的值)

ASL怎麼求

分別分為成功和非成功的情況

成功

每個結點的深度相加除以結點個數

非成功

我拿個書上的例子把
這裡寫圖片描述

首先,先補全二叉樹,可以看到有12個非成功的結點,這裡我假設每個非成功查詢結點概率相同,然後深度為3的非成功結點有4個,深度為4的非成功結點有8個。所以是3*4+4*8

所以該圖非成功的ASL=(3*4+4*8)/12