二叉查詢樹python實現

2021-06-22 13:37:42 字數 1477 閱讀 4868

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

二叉查詢樹,實現

public class binarytree 移除乙個節點 分三種情況,乙個是 該節點本身是葉子,乙個是 該節點含有乙個兒子節點 乙個是 該節點還有兩個兒子節點 param e param comareelement private binarynoderemove element e,binar...

Python 二叉查詢樹

二叉搜尋樹 binary search tree 又名二叉排序樹 binary sort tree 二叉搜尋樹是具有有以下性質的二叉樹 1 若左子樹不為空,則左子樹上所有節點的值均小於或等於它的根節點的值。2 若右子樹不為空,則右子樹上所有節點的值均大於或等於它的根節點的值。3 左 右子樹也分別為二...

python 二叉樹查詢 Python二叉樹搜尋

stack depth is initialised to 0 def find in tree node,find condition,stack depth assert stack depth max stack depth deeper than max depth stack depth ...