欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python實現(xiàn)二叉查找樹實例代碼

 更新時間:2018年02月08日 11:25:20   作者:零丁若嘆  
這篇文章主要介紹了python實現(xiàn)二叉查找樹實例代碼,分享了相關代碼示例,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下

本文研究的主要是python實現(xiàn)二叉查找樹的相關內容,具體介紹及實現(xiàn)如下。

1. 二叉查找樹的定義:

左子樹不為空的時候,左子樹的結點值小于根節(jié)點,右子樹不為空時,右子樹的結點值大于根節(jié)點,左右子樹分別為二叉查找樹

2. 二叉查找樹的最左邊的結點即為最小值,要查找最小值,只需遍歷左子樹的結點直到為空為止,同理,最右邊的結點結尾最大值,要查找最大值,只需遍歷右子樹的結點直到為空為止。二叉查找樹的插入查找和刪除都是通過遞歸的方式來實現(xiàn)的,刪除一個結點的時候,先找到這個結點S,如果這個結點左右孩子都不為空,這時并不是真正的刪除這個結點S,而是在其右子樹找到后繼結點,將后繼結點的值付給S,然后刪除這個后繼結點即可。如果結點S的左孩子或者右孩子為空,可以直接刪除這個結點S。

3. 二叉查找樹的python實現(xiàn):

class TreeNode: 
  def __init__(self,val): 
    self.val=val; 
    self.left=None; 
    self.right=None; 
def insert(root,val): 
  if root is None: 
    root=TreeNode(val); 
  else: 
    if val<root.val: 
      root.left=insert(root.left,val);  #遞歸地插入元素 
    elif val>root.val: 
      root.right=insert(root.right,val);  
  return root; 
 
def query(root,val): 
  if root is None: 
    return ; 
  if root.val is val: 
    return 1; 
  if root.val <val: 
    return query(root.right,val); #遞歸地查詢 
  else:  
    return query(root.left,val); 
def findmin(root): 
  if root.left: 
    return findmin(root.left); 
  else: 
    return root; 
   
def delnum(root,val): 
  if root is None: 
    return ; 
  if val<root.val: 
    return delnum(root.left,val); 
  elif val>root.val: 
    return delnum(root.right,val); 
  else:                       # 刪除要區(qū)分左右孩子是否為空的情況 
    if(root.left and root.right): 
       
      tmp=finmin(root.right);       #找到后繼結點 
      root.val=tmp.val; 
      root.right=delnum(root.right,val);  #實際刪除的是這個后繼結點 
       
    else: 
      if root.left is None: 
        root=root.right; 
      elif root.right is None: 
        root=root.left; 
  return root; 
         
         
#測試代碼       
root=TreeNode(3); 
root=insert(root,2); 
root=insert(root,1); 
root=insert(root,4); 
 
#print query(root,3); 
print query(root,1); 
root=delnum(root,1); 
print query(root,1); 

結果:

1
None
>>>

總結

以上就是本文關于python實現(xiàn)二叉查找樹實例代碼的全部內容,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!

相關文章

  • 探索Python元類的魅力:靈活定制類的創(chuàng)建過程

    探索Python元類的魅力:靈活定制類的創(chuàng)建過程

    在Python編程中,元類(Metaclass)是一項高級特性,它允許我們在定義類的時候動態(tài)地控制類的創(chuàng)建過程。元類提供了一種強大的機制,可以對類進行定制化,擴展其功能,并在類的實例化過程中執(zhí)行額外的操作,本文將深入解析
    2023-10-10
  • jenkins+python自動化測試持續(xù)集成教程

    jenkins+python自動化測試持續(xù)集成教程

    這篇文章主要介紹了jenkins+python自動化測試持續(xù)集成教程,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • Win 10下Anaconda虛擬環(huán)境的教程

    Win 10下Anaconda虛擬環(huán)境的教程

    這篇文章主要介紹了Win 10下Anaconda虛擬環(huán)境的相關知識,本文通過實例截圖相結合給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-05-05
  • 深入詳解Python中生成器的原理與應用

    深入詳解Python中生成器的原理與應用

    生成器 是Python中一種非常實用的特性,它能幫助我們編寫高效的代碼,本文將詳細為大家介紹生成器的原理、用法以及實際應用場景,有需要的小伙伴可以了解下
    2023-12-12
  • python操作docx寫入內容,并控制文本的字體顏色

    python操作docx寫入內容,并控制文本的字體顏色

    今天小編就為大家分享一篇python操作docx寫入內容,并控制文本的字體顏色,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • Python中map,reduce,filter和sorted函數(shù)的使用方法

    Python中map,reduce,filter和sorted函數(shù)的使用方法

    這篇文章主要介紹了Python中map,reduce,filter和sorted函數(shù)的使用方法,是Python入門學習中的基礎知識,需要的朋友可以參考下
    2015-08-08
  • Python隨機生成數(shù)據(jù)后插入到PostgreSQL

    Python隨機生成數(shù)據(jù)后插入到PostgreSQL

    本文主要介紹利用python的random庫生成隨機數(shù),然后插入到PostgreSQL數(shù)據(jù)庫中,有需要的可以參考學習。
    2016-07-07
  • Python中的__init__作用是什么

    Python中的__init__作用是什么

    在本篇文章里小編給大家分享的是關于Python中的__init__作用以及相關用法內容,需要的朋友們可以學習下。
    2020-06-06
  • Python利用myqr庫創(chuàng)建自己的二維碼

    Python利用myqr庫創(chuàng)建自己的二維碼

    這篇文章主要給大家介紹了關于Python利用myqr庫創(chuàng)建自己的二維碼的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-11-11
  • Windows10+anacond+GPU+pytorch安裝詳細過程

    Windows10+anacond+GPU+pytorch安裝詳細過程

    這篇文章主要介紹了Windows10+anacond+GPU+pytorch安裝詳細過程,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-03-03

最新評論