資料結構 二叉樹(Python實現)

2021-08-25 02:46:13 字數 2001 閱讀 9054

class

node

(object):

def__init__

(self, data, left=none, right=none):

self.data=data

self.left=left

self.right=right

binarytree=node(1,node(3,node(7,node(0)),node(6)),node(2,node(5),node(4)))

def

lookup

(root):

print("二叉樹層次遍歷的結果:",end='')

stack = [root]

while stack:

current=stack.pop(0)

print(current.data,end='')

if current.left:

if current.right:

print()

lookup(binarytree)

#這是前序遍歷二叉樹

defpreorder

(root, order):

if root==none:

return

print(root.data,end='')

preorder(root.left, order)

preorder(root.right, order)

print("二叉樹前序遍歷的結果:",end='')

pre_order=

preorder(binarytree, pre_order)

print()

#這是中序遍歷二叉樹

definorder

(root, order):

if root==none:

return

inorder(root.left, order)

print(root.data,end='')

inorder(root.right, order)

print("二叉樹中序遍歷的結果:",end='')

in_order=

inorder(binarytree, in_order)

print()

#這是後序遍歷二叉樹

defpostorder

(root, order):

if root==none:

return

postorder(root.left, order)

postorder(root.right, order)

print(root.data,end='')

print("二叉樹後序遍歷的結果:",end='')

post_order=

postorder(binarytree, post_order)

print()

#根據前序遍歷和中序遍歷構造二叉樹

defconstruct_tree

(pre_order, in_order):

if len(pre_order)==0:

return

none

root_data=pre_order[0]

for i in range(len(in_order)):

if in_order[i]==root_data:

break

left=construct_tree(pre_order[1:i+1],in_order[:i])

right=construct_tree(pre_order[i+1:],in_order[i+1:])

return node(root_data, left, right)

binarytree2=construct_tree(pre_order, in_order)

資料結構 二叉樹(Python實現)

1 特點 a.不為空 b.子樹不分次序 c.至少有1個根結點 d.乙個結點可以有多個子樹 2 樹的度 結點的度 乙個結點擁有的子樹個數 樹的度 橫向 樹中結點最大的度 3 樹的高度 樹的高度 縱向 樹的層數 4 性質 a.高度為h的樹最多有2h 1個結點 滿二叉樹 1 特點 a.可以為空 b.子樹分...

Python 二叉樹資料結構

二叉樹是每個結點最多有兩個子樹的樹結構。通常子樹被稱作 左子樹 left subtree 和 右子樹 right subtree 將二叉樹的節點定義為乙個物件,節點之間通過類似鍊錶的鏈結方式來連線。二叉樹的遍歷方式 前序遍歷 eacbdgf 中序遍歷 abcdegf 後序遍歷 bdcafge 層次遍...

資料結構 線索二叉樹 python實現

線索二叉樹是在普通二叉樹的基礎上對根節點上的空指標域做了改變,定義使左指標指向當前節點的前驅節點,右指標指向當前節點的後繼節點。這種加上了線索的二叉鍊錶稱為線索鍊錶,相應的二叉樹稱為線索二叉樹 threaded binarytree 根據線索性質的不同,線索二叉樹可分為前序線索二叉樹 中序線索二叉樹...