class BTNode(object):
def __init__(self, key=None, lchild=None, rchild=None):
self.key = key
self.lchild = lchild
self.rchild = rchild
class BiTree(object):
def __init__(self, data_list):
self.root = BTNode()
self.queue = [] # 用于存放正在操作的子樹的三個節點,依次是root, left, right
def add(self, ele):
new_node = BTNode(ele)
self.queue.append(new_node)
if self.root.key is None:
self.root = new_node
else:
tree_node = self.queue[0]
if tree_node.lchild is None:
tree_node.lchild = new_node
else:
tree_node.rchild = new_node
self.queue.pop(0)
def preOrderTrave(self, bt):
if bt is not None:
print(bt.key, end=" ")
self.preOrderTrave(bt.lchild)
self.preOrderTrave(bt.rchild)
def levelTrave(self, bt):
if bt is not None:
queue =[bt]
level = 0
while queue:
print(level, "層:", end=":")
for i in range(len(queue)):
bt = queue.pop(0)
print(bt.key, end=" ")
if bt.lchild != None:
queue.append(bt.lchild)
if bt.rchild != None:
queue.append(bt.rchild)
level = level + 1
print("\n")
btree = BiTree(data_list)
for i in range(20):
btree.add(i)
btree.preOrderTrave(btree.root)
print("\n")
btree.levelTrave(btree.root)
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
