最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python實(shí)現(xiàn)二叉排序樹(shù)

 更新時(shí)間:2022年01月26日 11:44:51   作者:咕嘟咕嘟_?  
這篇文章主要介紹了python實(shí)現(xiàn)二叉排序樹(shù),

方法一(粗暴)

#二叉排序樹(shù)
class BTree():
? ? def __init__(self,data):
? ? ? ? self.left = None
? ? ? ? self.right = None
? ? ? ? if type(data) == list:
? ? ? ? ? ? self.data = data[0]
? ? ? ? ? ? for d in data[1:]:
? ? ? ? ? ? ? ? self.insert(d)
? ? ? ? else:
? ? ? ? ? ? self.data = data
? ? def insert(self,data):
? ? ? ? bt = self
? ? ? ? while True:
? ? ? ? ? ? if data <= bt.data:
? ? ? ? ? ? ? ? if bt.left == None:
? ? ? ? ? ? ? ? ? ? bt.left = BTree(data)
? ? ? ? ? ? ? ? ? ? break
? ? ? ? ? ? ? ? else:
? ? ? ? ? ? ? ? ? ? bt = bt.left
? ? ? ? ? ? else:
? ? ? ? ? ? ? ? if bt.right == None:
? ? ? ? ? ? ? ? ? ? bt.right = BTree(data)
? ? ? ? ? ? ? ? ? ? break
? ? ? ? ? ? ? ? else:
? ? ? ? ? ? ? ? ? ? bt = bt.right
? ? def mid_order(self):
? ? ? ? res = []
? ? ? ? stack = []
? ? ? ? node = self?
? ? ? ? while node or stack:
? ? ? ? ? ? while node:
? ? ? ? ? ? ? ? stack.append(node)?
? ? ? ? ? ? ? ? node = node.left
? ? ? ? ? ? node = stack.pop()
? ? ? ? ? ? res.append(node.data)
? ? ? ? ? ? node = node.right
? ? ? ? return res

data = [5,1,2,3,6,8,9]
bt = BTree(data)
print(bt.mid_order())

方法二(遞歸)

class TreeNode(object):
? ? def __init__(self,data):
? ? ? ? self.data = data
? ? ? ? self.left = None
? ? ? ? self.right = None

class BinaryTree(object):
? ? def insert(self,root, node):
? ? ? ? if root is None:
? ? ? ? ? ? return node
? ? ? ? if node.data < root.data:
? ? ? ? ? ? root.left = self.insert(root.left, node)
? ? ? ? else:
? ? ? ? ? ? root.right = self.insert(root.right, node)
? ? ? ? return root
? ? def mid_order(self,root):
? ? ? ? node = root
? ? ? ? stack = []
? ? ? ? res = []
? ? ? ? while node or stack:
? ? ? ? ? ? while node:
? ? ? ? ? ? ? ? stack.append(node)
? ? ? ? ? ? ? ? node = node.left
? ? ? ? ? ? node = stack.pop()
? ? ? ? ? ? res.append(node.data)
? ? ? ? ? ? node = node.right
? ? ? ? return res
? ??
data = [5,1,2,3,6,8,9]
root = TreeNode(data[0])
tree = BinaryTree()
for i in data[1:]:
? ? tree.insert(root,TreeNode(i))
print(tree.mid_order(root))

到此這篇關(guān)于python實(shí)現(xiàn)二叉排序樹(shù)的文章就介紹到這了,更多相關(guān)python二叉排序樹(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

台北市| 榆林市| 招远市| 集贤县| 邯郸县| 缙云县| 凤台县| 讷河市| 昌都县| 锡林浩特市| 新余市| 舞钢市| 家居| 瓦房店市| 麻栗坡县| 尖扎县| 临桂县| 综艺| 交城县| 阳原县| 大新县| 新建县| 舞阳县| 高碑店市| 铜陵市| 乌兰县| 宁远县| 磴口县| 穆棱市| 水富县| 阳高县| 胶南市| 龙泉市| 长垣县| 韩城市| 靖西县| 长沙市| 凤阳县| 阿拉善盟| 长泰县| 沂源县|