91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python怎么實現二叉查找樹

發布時間:2021-03-23 11:35:33 來源:億速云 閱讀:149 作者:小新 欄目:開發技術

這篇文章主要介紹了python怎么實現二叉查找樹,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

具體介紹及實現如下。

1. 二叉查找樹的定義:

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

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

3. 二叉查找樹的python實現:

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:                       # 刪除要區分左右孩子是否為空的情況 
    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怎么實現二叉查找樹”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

辛集市| 河源市| 东台市| 巴里| 鄂伦春自治旗| 彰化市| 壤塘县| 昌邑市| 桓台县| 墨玉县| 双城市| 榕江县| 左权县| 孟州市| 左贡县| 屏东市| 滦平县| 东港市| 大悟县| 东安县| 德庆县| 桂平市| 璧山县| 东兴市| 梅州市| 抚松县| 怀柔区| 富平县| 凤冈县| 福建省| 河津市| 江安县| 普陀区| 托克逊县| 平定县| 芮城县| 萨迦县| 三穗县| 宣城市| 宝兴县| 金塔县|