Python 構造二叉搜尋樹

2021-08-07 23:01:59 字數 2465 閱讀 6982

本文採用python語言編寫資料結構之二叉搜尋樹,主要實現二叉樹的構造,插入資料,刪除資料,以及二叉樹的中序遍歷,先序遍歷,和後序遍歷。

具體**如下:

#構造二叉樹結構,及屬性

class

tree

(object):

def__init__

(self):

self.root=none

class

node

(object):

def__init__

(self,x):

self.key=x

self.left=none

self.right=none

self.parent=none

#插入二叉樹資料

deftreeinsert

( t, z):

y =none

x = t.root

while x != none:

y = x

if z.key < x.key:

x = x.left

else:

x = x.right

z.parent = y

if y == none:

t.root = z

elif z.key < y.key:

y.left = z

else:

y.right = z

z.left = none

z.right = none

return z.key

#刪除節點

deftransplant

(t,u,v):

if u.parent==none:

t.root=v

elif u==u.parent.left:

u.parent.left=v

else:

u.parent.right=v

if v!=none:

v.parent=u.parent

deftreemin

(x):

while x.left !=none:

x=x.left

return x

deftreedelete

(t,z):

if z.left==none:

transplant(t,z,z.right)

elif z.right==none:

transplant(t,z,z.left)

else:

y=treemin(z.right)

if y.parent!=z:

transplant(t,y,y.right)

y.right=z.right

y.right.parent=y

transplant(t,z,y)

y.left=z.left

y.left.parent=y

return z.key

#中序遍歷

defmidsort

(root):

if root!= none:

midsort(root.left)

if root.key!=0:

print(root.key)

midsort(root.right)

#先序遍歷

defbehsort

(root):

if root!= none:

behsort(root.left)

behsort(root.right)

if root.key != 0:

print(root.key)

#後序遍歷

defpresort

(root):

if root!= none:

if root.key != 0:

print(root.key)

presort(root.left)

presort(root.right)

#構造二叉樹例項物件

node=[5,9,6,8,7,2,1,10]

t=tree()

#插入二叉樹資料

for nodes in node:

print('插入資料',treeinsert(t,node(nodes)))

#刪去乙個節點

print('刪去節點',treedelete(t,t.root))

#中序遍歷

print('中序遍歷')

midsort(t.root)

#後序遍歷

print('後序遍歷')

behsort(t.root)

#先序遍歷

print('先序遍歷')

presort(t.root)

執行結果如下:

二叉搜尋樹 二叉搜尋樹

題目 二叉搜尋樹 time limit 2000 1000 ms j a others memory limit 32768 32768 k j a others total submission s 6945 accepted submission s 3077 problem descripti...

二叉搜尋樹 修剪二叉搜尋樹

第一反應是重構,看來別人的解答發現,其實不用重構那麼複雜。treenode trimbst treenode root,int low,int high if root val high 下一層處理完左子樹的結果賦給root left,處理完右子樹的結果賦給root right。root left ...

python實現二叉搜尋樹

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