日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

python二叉树遍历算法_分享python实现的二叉树定义与遍历

發布時間:2023/11/27 生活经验 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python二叉树遍历算法_分享python实现的二叉树定义与遍历 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這篇文章主要介紹了python實現的二叉樹定義與遍歷算法,結合具體實例形式分析了基于Python定義的二叉樹及其常用遍歷操作實現技巧,需要的朋友可以參考下

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

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

# -*- coding: utf-8 -*-

from collections import deque

class 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=right

class 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)

輸出:

中序遍歷

-1

1

3

4

5

層序遍歷

3

-1

4

1

5

前序遍歷

3

-1

1

4

5

后序遍歷

1

-1

5

4

3

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

總結

以上是生活随笔為你收集整理的python二叉树遍历算法_分享python实现的二叉树定义与遍历的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。