python實現(xiàn)二叉排序樹
更新時間:2022年01月26日 11:44:51 作者:咕嘟咕嘟_?
這篇文章主要介紹了python實現(xiàn)二叉排序樹,
方法一(粗暴)
#二叉排序樹 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))
到此這篇關于python實現(xiàn)二叉排序樹的文章就介紹到這了,更多相關python二叉排序樹內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Python RobotFramework的安裝過程及應用實戰(zhàn)教程
這篇文章主要介紹了RobotFramework的安裝過程及應用實戰(zhàn)教程,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-08-08Python 語法錯誤:"SyntaxError: invalid charac
本文給大家分享Python 語法錯誤:“SyntaxError: invalid character in identifier“,原因及解決方法,文末給大家補充介紹了Python出現(xiàn)SyntaxError: invalid syntax的原因總結(jié),感興趣的朋友跟隨小編一起學習吧2023-02-02Python函數(shù)any()和all()的用法及區(qū)別介紹
any函數(shù):any(x),只要x中有一個不為空,0,false就返回True,否則返回False。all(x)函數(shù)必須x中的所有元素均不為空,0,false才會返回True,否則返回False。接下來通過本文給大家介紹Python函數(shù)any()和all()的用法及區(qū)別介紹,需要的朋友參考下吧2018-09-09python pygame實現(xiàn)滾動橫版射擊游戲城市之戰(zhàn)
這篇文章主要為大家詳細介紹了python pygame實現(xiàn)滾動橫版射擊游戲城市之戰(zhàn),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-11-11python中將兩組數(shù)據(jù)放在一起按照某一固定順序shuffle的實例
今天小編就為大家分享一篇python中將兩組數(shù)據(jù)放在一起按照某一固定順序shuffle的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-07-07