最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python實(shí)現(xiàn)二叉搜索樹BST的方法示例

 更新時(shí)間:2019年07月30日 11:21:27   作者:神不煩  
這篇文章主要介紹了Python實(shí)現(xiàn)二叉搜索樹BST的方法示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

二叉排序樹(BST)又稱二叉查找樹、二叉搜索樹

二叉排序樹(Binary Sort Tree)又稱二叉查找樹。它或者是一棵空樹;或者是具有下列性質(zhì)的二叉樹:

1.若左子樹不空,則左子樹上所有結(jié)點(diǎn)的值均小于根結(jié)點(diǎn)的值;
2.若右子樹不空,則右子樹上所有結(jié)點(diǎn)的值均大于根節(jié)點(diǎn)的值;
3.左、右子樹也分別為二叉排序樹。

  • 求樹深度
  • 按序輸出節(jié)點(diǎn)值(使用中序遍歷)
  • 查詢二叉搜索樹中一個(gè)具有給點(diǎn)關(guān)鍵字的結(jié)點(diǎn),返回該節(jié)點(diǎn)的位置。時(shí)間復(fù)雜度是O(h),h是樹的高度。
  • 遞歸/迭代求最大關(guān)鍵字元素
  • 遞歸/迭代求最小關(guān)鍵字元素
# -*- coding:utf-8 -*-
'''
用Python實(shí)現(xiàn)二叉搜索樹。
'''


class Node():
  def __init__(self, x):
    self.val = x
    self.left = None
    self.right = None

#求樹的深度
def depth(root):
    if root is None:
      return 0
    else:
      return 1 + max(depth(root.left), depth(root.right))


#按序輸出結(jié)點(diǎn)值(中序遍歷)
def input_in_order(root):
  if root is None:
    return
  input_in_order(root.left)
  print(root.val)
  input_in_order(root.right)



#(遞歸實(shí)現(xiàn) 、迭代實(shí)現(xiàn))查詢二叉搜索樹中一個(gè)具有給點(diǎn)關(guān)鍵字的結(jié)點(diǎn),返回該節(jié)點(diǎn)的位置。時(shí)間復(fù)雜度是O(h),h是樹的高度。
#遞歸實(shí)現(xiàn)
def search1(root, value):
  if root is None or root.val == value:
    return root
  if root.val > value:
    return search1(root.left, value)
  if root.val < value:
    return search1(root.right, value)


#迭代實(shí)現(xiàn)
def search2(root, value):
  while root != None and root.val != value:
    if root.val > value:
      root = root.left
    elif root.val < value:
      root = root.right
  return root


#求最大關(guān)鍵字元素
#迭代實(shí)現(xiàn)
def max_value1(root):
  while root != None and root.left != None:
    root = root.right
  if root is None:
    return root
  else:
    return root.val

#遞歸實(shí)現(xiàn)
def max_value2(root):
  if root == None:
    return root
  elif root.right == None:
    return root.val
  else:
    return max_value2(root.right)


#求最小關(guān)鍵字元素
#遞歸實(shí)現(xiàn)
def min_value1(root):
  if root is None:
    return root
  elif root.left is None:
    return root.val
  else:
    return min_value1(root.left)


#迭代實(shí)現(xiàn)
def min_value2(root):
  if root is None:
    return root
  while root.left !=None:
    root = root.left
  return root.val


if __name__ == '__main__':
  a = Node(15)
  b = Node(6)
  c = Node(18)
  d = Node(4)
  e = Node(8)
  f = Node(17)
  g = Node(20)
  h = Node(13)
  i = Node(9)
  a.left = b
  a.right = c
  b.left = d
  b.right = e
  c.left = f
  c.right = g
  e.right = h
  h.left = i
  print(search1(a, 13))
  print(search2(a,13))
  print(max_value1(a))
  print(max_value2(a))
  print(min_value1(a))
  print(min_value2(a))

ps:從二叉查找樹BST中查找元素X,返回其所在結(jié)點(diǎn)的地址,查找的次數(shù)取決于樹的高度。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 使用Python打造高效多進(jìn)程TCP服務(wù)器

    使用Python打造高效多進(jìn)程TCP服務(wù)器

    這篇文章主要為大家詳細(xì)介紹了如何使用Python實(shí)現(xiàn)多進(jìn)程的TCP服務(wù)器,通過為每個(gè)連接進(jìn)來的客戶端分配一個(gè)進(jìn)程,實(shí)現(xiàn)并發(fā)處理多個(gè)客戶端請求的能力,感興趣的可以了解下
    2024-01-01
  • OpenCV python sklearn隨機(jī)超參數(shù)搜索的實(shí)現(xiàn)

    OpenCV python sklearn隨機(jī)超參數(shù)搜索的實(shí)現(xiàn)

    這篇文章主要介紹了OpenCV python sklearn隨機(jī)超參數(shù)搜索的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • Python判斷Abundant Number的方法

    Python判斷Abundant Number的方法

    這篇文章主要介紹了Python判斷Abundant Number的方法,實(shí)例分析了Python針對盈數(shù)的判斷技巧,需要的朋友可以參考下
    2015-06-06
  • 用Python的SimPy庫簡化復(fù)雜的編程模型的介紹

    用Python的SimPy庫簡化復(fù)雜的編程模型的介紹

    這篇文章主要介紹了用Python的SimPy庫簡化復(fù)雜的編程模型的介紹,本文來自于官方的開發(fā)者技術(shù)文檔,需要的朋友可以參考下
    2015-04-04
  • 跟老齊學(xué)Python之用Python計(jì)算

    跟老齊學(xué)Python之用Python計(jì)算

    做為零基礎(chǔ)學(xué)習(xí)Python,也就從計(jì)算小學(xué)數(shù)學(xué)題目開始吧。因?yàn)閺倪@里開始,數(shù)學(xué)的基礎(chǔ)知識列為肯定過關(guān)了。
    2014-09-09
  • Python中對字典的幾個(gè)處理方法分享

    Python中對字典的幾個(gè)處理方法分享

    這篇文章主要介紹了Python中對字典的幾個(gè)處理方法分享,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,感興趣的小伙伴可以參考一下
    2022-08-08
  • python并行設(shè)計(jì)的實(shí)現(xiàn)

    python并行設(shè)計(jì)的實(shí)現(xiàn)

    python中的并行設(shè)計(jì)可以顯著增強(qiáng)程序處理大量數(shù)據(jù)或復(fù)雜計(jì)算的速度,通過使用threading、multiprocessing和concurrent.futures等庫,開發(fā)者可以有效利用多核CPU的計(jì)算力,下面就來詳細(xì)的介紹一下
    2024-09-09
  • python?Helium自動化庫的功能特性探索

    python?Helium自動化庫的功能特性探索

    這篇文章主要為大家介紹了python?Helium自動化庫的功能特性探索,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2024-02-02
  • Python實(shí)現(xiàn)并行抓取整站40萬條房價(jià)數(shù)據(jù)(可更換抓取城市)

    Python實(shí)現(xiàn)并行抓取整站40萬條房價(jià)數(shù)據(jù)(可更換抓取城市)

    本文主要是以房價(jià)網(wǎng)房價(jià)信息爬蟲為例,對Python實(shí)現(xiàn)整站40萬條房價(jià)數(shù)據(jù)并行抓?。筛鼡Q抓取城市)的方法進(jìn)行分析介紹。需要的朋友一起來看下吧
    2016-12-12
  • Django ORM實(shí)現(xiàn)按天獲取數(shù)據(jù)去重求和例子

    Django ORM實(shí)現(xiàn)按天獲取數(shù)據(jù)去重求和例子

    這篇文章主要介紹了Django ORM實(shí)現(xiàn)按天獲取數(shù)據(jù)去重求和例子,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05

最新評論

汝阳县| 古蔺县| 都匀市| 陵川县| 旬邑县| 吴忠市| 特克斯县| 汉川市| 漯河市| 安吉县| 绥江县| 同心县| 邵阳市| 汝阳县| 涞源县| 八宿县| 泸定县| 栾川县| 娄烦县| 西乡县| 贵港市| 桦南县| 云龙县| 四平市| 临高县| 娄烦县| 临朐县| 辽宁省| 江陵县| 尉犁县| 亳州市| 凉山| 新安县| 志丹县| 昌乐县| 宁强县| 涿州市| 兴文县| 凤城市| 永修县| 从江县|