輕鬆解決不同關鍵字序列構成的二叉排序樹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
相關推薦
輕鬆解決不同關鍵字序列構成的二叉排序樹ASL(平均查詢長度)(成功)不同問題
打算就說說標題的方法,和介紹一下查詢成功和非成功二叉樹中結點的方法 關鍵字序列1,2,3,4,5構造而得的二叉排序樹 ASL=(1,2,3,4,5)/5=3 按關鍵字3,1,2,5,4構造而得的二叉排序樹 ASL=(1+2+
二叉排序樹的建立,查詢,遍歷
1 #include<stdio.h> 2 #include <iostream> 3 #include<algorithm> 4 using namespace std; 5 #define MAXSIZE 100 6 typedef int KeyTy
Java實現二叉排序樹的插入、查詢、刪除
import java.util.Random; /** * 二叉排序樹(又稱二叉查詢樹) * (1)可以是一顆空樹 * (2)若左子樹不空,則左子樹上所有的結點的值均小於她的根節點的值 * (3)若右子樹不空,則右子樹上所有的結點的值均大於她的根節點的值
二叉排序樹的建立和查詢(面試常考)
在眾多查詢方法中,二叉排序樹查詢是比較好的一種查詢,其效率比順序查詢,折半查詢,插值查詢,斐波納契查詢等都要好。 二叉排序樹的建立 首先要了解而叉排序樹如何建立,給定一組陣列,建立一個而叉排序樹 #include <iostream>
基於二叉排序樹的高校分數查詢系統
前述:該學期最後的資料結構的課程設計選題,於是記錄在自己部落格中,作為自己技術成長的點滴吧。 題目:高校最低錄取分數線的查詢 程式設計實現一個開放式的高校本科招生最低分數線的查詢系統,供師生及家長等查詢,高校自願放入該校的資訊,可能隨時有高
二叉排序樹的建立和查詢
//head2.h #include <stdio.h> #include <iostream> using namespace std; template<class type> class BinarySortTree { priva
資料結構:由有序數列建立一棵高度最小的二叉排序樹與判斷一 個序列是否為該二叉排序樹中的一個合法查詢序列
編寫一個程式,對於給定的一個有序的關鍵字序列,建立一棵高度最小的二叉排序樹。並判斷一個序列是否為該二叉排序樹中的一個合法的查詢序列 #include<stdio.h> #include<stdlib.h> typedef struct node
已知如下的一顆二叉排序樹,問可能的關鍵字輸入順序有幾種
資料結構上一道題目,假設有任意的輸入二叉樹,問最終由幾種可能的插入順序。 其實這道題目還是有很多理解方法。我這裡只是介紹一種最為簡單的方法。 5 4
二叉排序樹
sans insert -a put 定義 n) include 先序 min Time Limit: 1000MS Memory limit: 65536K 題目描寫敘述 二叉排序樹的定義是:或者是一棵空樹。或者是具有下列性質的二叉樹: 若它的左子樹不空,
二叉排序樹的插入與刪除
else post 相等 大於 truct art parent node -m 二叉排序樹的插入與刪除可能會破壞二叉排序樹的性質,如今要求插入和刪除操作保持其性質 二叉排序樹或者是一棵空樹,或者是具有下列性質的二叉樹: (1)若左子樹不空,則左子樹上全部結點的
數據結構與算法問題 二叉排序樹
geo post adding ng- spa main 排序樹 ack word 題目描寫敘述: 二叉排序樹,也稱為二叉查找樹。能夠是一顆空樹。也能夠是一顆具有例如以下特性的非空二叉樹: 1. 若左子樹非空,則左
二叉排序樹 C++
二叉查找樹 {} 刪除元素 one dem trees system arc oid 二叉排序樹(Binary Sort Tree),又稱二叉查找樹。 1、若左子樹不為空,則左子樹上所有結點的值均小於他的根結構的值; 2、若右子樹不為空,則右子樹上所有結點的值均大於他的根結
C語言——二叉排序樹
pre span ren 二叉 == nbsp stdio.h spa int 二叉排序樹是一種實現動態查找的樹表,又稱二叉查找樹。 二叉排序樹的性質: 1. 若它的左子樹不為空,則左子樹上所有節點的鍵值均小於它的根節點鍵值 2. 若它的右子樹不為空,則右子樹上所有節
二叉排序樹和平衡二叉樹的關系
fill 樹的高度 == eight font 關系 avl樹 avi 等於 二叉排序樹: 二叉排序樹又稱二叉查找樹,亦稱二叉搜索樹。 二叉排序樹或者是一顆空樹,或者是具有下列性質的二叉樹: (1)若左子樹不空,則左子樹上所有結點的值均小於它的根節點的值; (2)若右子
js 實現二叉排序樹
struct rip != function 一個 ons || 二叉排序樹 arr 二叉排序樹或者是一棵空樹,或者是具有下列性質的二叉樹: (1)若左子樹不空,則左子樹上所有結點的值均小於或等於它的根結點的值; (2)若右子樹不空,則右子樹上所有結點的值均大於或等於它的根
BST(二叉排序樹)的插入與刪除
最小值 temp def oot gpo 一個 記錄 通過 如果 值得一說的是刪除操作,刪除操作我們分為三種情況: 1.要刪的節點有兩個孩子: 找到左子樹中的最大值或者右子樹中的最小值所對應的節點,記為node,並把node的值賦給要刪除的節點del,然後刪除node
SDUT 2482 二叉排序樹
reat can urn AR trac data main itl str 二叉排序樹 Time Limit: 1000ms?? Memory limit:
【Java】 大話數據結構(11) 查找算法(2)(二叉排序樹/二叉搜索樹)
PE bsp clas 代碼 根節點 替代 找到 extend true 本文根據《大話數據結構》一書,實現了Java版的二叉排序樹/二叉搜索樹。 二叉排序樹介紹 在上篇博客中,順序表的插入和刪除效率還可以,但查找效率很低;而有序線性表中,可以使用折半、插值、斐波
C++ 判斷一顆樹騰訊分是分網站開發否是BST(二叉排序樹)
sizeof 存儲 tno ret turn bre 打印 二叉 添加 因為騰訊分分網站開發 haozbbs.com Q1446595067二叉排序樹的中序遍歷結果是遞增的,所以可以通過中序遍歷存儲結果,再判斷是否為遞增的數組。1) 對樹進行中序遍歷,將結果保存在b[]
創建二叉樹( 二叉排序樹(Binary Sort Tree))
sort data scanf urn pre [] print 二叉樹 str #include<stdio.h> #include<stdlib.h> /* 遞歸前中後遍歷 */ typedef struct node { int data;