Python實現二叉搜尋樹BST的方法示例

2022-10-04 16:39:10 字數 2689 閱讀 7029

二叉排序樹(bst)又稱二叉查詢樹、二叉搜尋樹

二叉排序樹(binary sort tree)又稱二叉查詢樹。它或者是一棵空樹;或者是具有下列性質的二叉樹:

1.若左子樹不空,則左子樹上所有結點的值均小於根結點的值;

2.若右子樹不空,則右子樹上所有結點的值均大於根節點的程式設計客棧值;

3.左、右子樹也分別為二叉排序樹。

rawcrlc# -*- coding:utf-8 -*-

'''用python實現二叉搜尋樹。

'''class node():

def __init__(self, x):

self.val = x

self.left = none

self.right = none

#求樹的深度

def depth(root)rawcrlc:

if root is none:

return 0

else:

return 1 + max(depth(root.left), depth(root.right))

#按序輸出結點值(中序遍歷)

def input_in_order(root):

if root is none:

return

input_in_order(root.left)

print(root.val)

input_in_order(root.right)

#(遞迴實現 、迭代實現)查詢二叉搜尋樹中乙個具有給點關鍵字的結點,返回該節點的位置。時間複雜度是o(h),h是樹的高度。

#遞迴實現

def search1(root, value):

if root is none or root.val == value:

return root

if root.val > value:

return search1(root.left, value)

if root.val < value:

return search1(root.right, value)

#迭代實現

def search2(root, value):

while root != none a程式設計客棧nd root.val != value:

if root.val > value:

root = root.left

elif root.val < value:

root = root.right

return root

#求最大關鍵字元素

#迭代實現

def max_value1(root):

while root != none and root.left != none:

root = root.right

if root is none:

return root

else:

return root.val

#遞迴實現

def max_value2(root):

if root == none:

return root

elif root.right == none:

return root.val

else:

return max_value2(root.right)

#求最小關鍵字元素

#遞迴實現

def min_value1(root):

if root is none:

return root

elif root.left is none:

return root.val

else:

return min_value1(root.left)

#迭代實現

def min_value2(root):

if root is none:

return root

while root.left !=none:

root = root.left

return root.val

if __name__ == '__main__':

a = node(15)

b = node(6)

c = node(18)

d = node(4)

e = node(8)

f = node(17)

g = node(20)

h = node(13)

i = node(9)

a.left = b

a.right = c

b.left = d

b.right = e

c.left = f

c.right = g

e.right = h

h.left = i

print(search1(a, 13))

print(search2(a,13))

print(max_value1(a))

print(max_value2(a))

print(min_value1(a))

print(min_value2(a))

ps:從二叉查詢樹bst中查詢元素x,返回其所在結點的位址,查詢的次數取決於樹的高度。

本文標題: python實現二叉搜尋樹bst的方法示例

本文位址: /jiaoben/python/267098.html

python實現二叉搜尋樹

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

Python實現二叉搜尋樹BST

二叉排序樹 binary sort tree 又稱二叉查詢樹。它或者是一棵空樹 或者是具有下列性質的二叉樹 1.若左子樹不空,則左子樹上所有結點的值均小於根結點的值 2.若右子樹不空,則右子樹上所有結點的值均大於根節點的值 3.左 右子樹也分別為二叉排序樹。coding utf 8 用python實...

二叉搜尋樹的python實現

二叉搜尋樹,特點是左節點的值小於根節點的值,右節點的值大於根節點的值,並且左右子樹也遵循這個規律.class binarysearchtree object def init self,key self.key key self.left none self.right none deffind s...