国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python實現的二叉樹定義與遍歷算法實例

2020-01-04 16:55:10
字體:
來源:轉載
供稿:網友

本文實例講述了python實現的二叉樹定義與遍歷算法。分享給大家供大家參考,具體如下:

初學python,需要實現一個決策樹,首先實踐一下利用python實現一個二叉樹數據結構。建樹的時候做了處理,保證建立的二叉樹是平衡二叉樹。

# -*- coding: utf-8 -*-from collections import dequeclass Node:  def __init__(self,val,left=None,right=None):    self.val=val    self.left=left    self.right=right  #setter and getter  def get_val(self):    return self.val  def set_val(self,val):    self.val=val  def get_left(self):    return self.left  def set_left(self,left):    self.left=left  def get_right(self):    return self.right  def set_right(self,right):    self.right=rightclass Tree:  def __init__(self,list):    list=sorted(list)    self.root=self.build_tree(list)  #遞歸建立平衡二叉樹  def build_tree(self,list):    l=0    r=len(list)-1    if(l>r):      return None    if(l==r):      return Node(list[l])    mid=(l+r)/2    root=Node(list[mid])    root.left=self.build_tree(list[:mid])    root.right=self.build_tree(list[mid+1:])    return root  #前序遍歷  def preorder(self,root):    if(root is None):      return    print root.val    self.preorder(root.left)    self.preorder(root.right)  #后序遍歷  def postorder(self,root):    if(root is None):      return    self.postorder(root.left)    self.postorder(root.right)    print root.val  #中序遍歷  def inorder(self,root):    if(root is None):      return    self.inorder(root.left)    print root.val    self.inorder(root.right)  #層序遍歷  def levelorder(self,root):    if root is None:      return    queue =deque([root])    while(len(queue)>0):      size=len(queue)      for i in range(size):        node =queue.popleft()        print node.val        if node.left is not None:          queue.append(node.left)        if node.right is not None:          queue.append(node.right)list=[1,-1,3,4,5]tree=Tree(list)print '中序遍歷:'tree.inorder(tree.root)print '層序遍歷:'tree.levelorder(tree.root)print '前序遍歷:'tree.preorder(tree.root)print '后序遍歷:'tree.postorder(tree.root)

輸出:

中序遍歷-11345層序遍歷3-1415前序遍歷3-1145后序遍歷1-1543

建立的二叉樹如下圖所示:

python,二叉樹,定義,遍歷,算法

PS:作者的github: https://github.com/zhoudayang

 

希望本文所述對大家Python程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 汉川市| 巴塘县| 宁武县| 新野县| 惠安县| 裕民县| 崇明县| 黄山市| 遂川县| 莱州市| 佛冈县| 名山县| 义乌市| 上饶市| 甘德县| 同心县| 千阳县| 西林县| 周宁县| 双鸭山市| 新晃| 静安区| 靖江市| 丹棱县| 屯留县| 隆回县| 高碑店市| 九龙城区| 楚雄市| 青海省| 山阴县| 仁怀市| 永州市| 云霄县| 中西区| 龙井市| 叶城县| 哈巴河县| 伊通| 渝中区| 禹州市|