python 使用oop實現二叉樹 線性鍊錶

2021-08-20 22:05:33 字數 2231 閱讀 6004

class tree:

class node:

#初始化函式

def __init__(self, data=none, left=none, right=none):

self.data = data

self.left = left

self.right = right

#新增def add(self, node):

#如果當前值比節點值大

if self.data > node.data:

if self.left is none:

#當前樹左側無資料,將節點賦值

self.left = node

else:

#當前樹左側有資料,將節點

self.left.add(node)

else:

if self.right is none:

self.right = node

else:

self.right.add(node)

#轉成string

def __str__(self):

return "node:".format(self.data)

#push方法

def push(self, link):

if self.left is not none:

self.left.push(link)

link.add(self)

if self.right is not none:

self.right.push(link)

#排序方法

def sort(self):

if self.left is not none:

self.left.sort()

print(self.data)

if self.right is not none:

self.right.sort()

#初始化方法

def __init__(self):

self.root = none

#新增def add(self, data):

n = self.node(data=data)

if self.root is none:

self.root = n

else:

self.root.add(n)

pass

#迭代器

def __iter__(self):

#建立線性列表

#返回link = self.mylink()

#將資料存入link

self.pushdatatolink(link)

return link

#將資料存入link

def pushdatatolink(self, link):

self.root.push(link)

#內部鍊錶物件

class mylink:

def __init__(self):

self.head = none

self.tail = none

#新增def add(self, node):

if self.head is none:

self.head = node

else:

self.tail.right = node

self.tail = node

#next方法

def __next__(self):

n = self.head

if n is none:

#遇到空時,丟擲異常

raise stopiteration

self.head = self.head.right

return n

#排序def sort(self):

self.root.sort()

if __name__ == '__main__':

mytree = tree()

mytree.add(17)

mytree.add(6)

mytree.add(45)

mytree.add(7)

mytree.add(12)

mytree.add(28)

mytree.add(14)

for i in mytree:

print(i)

#mytree.sort()

pass

Python實現二叉搜尋

二叉搜尋是在乙個有序的列表中,尋找目標元素。因此我們需要對半查詢即可。當目標元素比中間元素小,則在中間元素的左邊查詢 反之,則在目標元素的右邊查詢。直到左邊界比右邊界還要大停止查詢。def binarysearch target,arr right len arr 1 left 0 while le...

二叉查詢樹python實現

1.二叉查詢樹的定義 左子樹不為空的時候,左子樹的結點值小於根節點,右子樹不為空時,右子樹的結點值大於根節點,左右子樹分別為二叉查詢樹 2.二叉查詢樹的最左邊的結點即為最小值,要查詢最小值,只需遍歷左子樹的結點直到為空為止,同理,最右邊的結點結尾最大值,要查詢最大值,只需遍歷右子樹的結點直到為空為止...

python實現二叉搜尋樹

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