二叉尋找樹python實現

來源:互聯網
上載者:User

標籤:article   最小   區分   query   情況   code   content   尋找和刪除   size   

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);

二叉尋找樹python實現

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.