排序二叉樹的實現

2022-04-10 21:58:36 字數 1613 閱讀 3893

#

coding:utf8

class

node():

def__init__

(self, _item):

self.item =_item

self.left =none

self.right =none

class

sorttree():

def__init__

(self):

self.root =none

defadd(self, _item):

node =node(_item)

cur =self.root

#如果插入的第乙個元素為根節點

if cur ==none:

self.root =node

return

#如果插入元素是葉子節點

while

true:

##往左插入

if _item if cur.left ==none:

cur.left =node

break

else

: cur =cur.left

##往右插入

else

:

if cur.right ==none:

cur.right =node

break

else

: cur =cur.right

#深度優先搜尋遍歷

def forward(self, root): #

前序遍歷 :根左右

if root ==none:

return

print

(root.item)

self.forward(root.left)

self.forward(root.right)

def middle(self, root): #

中序遍歷 :左根右

if root ==none:

return

self.middle(root.left)

print

(root.item)

self.middle(root.right)

def back(self, root): #

後序遍歷 :左右根

if root ==none:

return

self.back(root.left)

self.back(root.right)

print

(root.item)

if__name__ == "

__main__":

tree =sorttree()

alist = [3, 8, 5, 7, 6, 2, 9, 4, 1]

for i in

alist:

tree.add(i)

tree.forward(tree.root)

tree.middle(tree.root)

tree.back(tree.root)

由列印結果可得:中序遍歷得到的是排序後的結果。

二叉樹 排序二叉樹的簡單實現

二叉樹 排序二叉樹 include using namespace std 二叉樹的節點 date 資料 left 指向二叉樹的左子樹 right 指向二叉樹的右子樹 template struct node template class btree public btree root null c...

二叉樹,排序二叉樹

說到二叉樹,這可是資料結構裡面的非常重要的一種資料結構,二叉樹是樹的一種,本身具有遞迴性質,所以基於二叉樹的一些演算法很容易用遞迴演算法去實現。作為一種非線性結構,比起線性結構還是相對複雜的,很多人甚至看不懂演算法的意思,不能理解。其實一開始接觸這些東西還是挺暈的,不過你多看幾遍,上機實現可能你就會...

排序二叉樹的實現

在電腦科學中,二叉樹是一種重要的非線性的資料結構。每個結點的度均小於等於2,通常子樹稱為左子樹和右子樹。而排序二叉樹是二叉樹中的一種,其滿足 1.如左子樹不為空,那麼左子樹上的結點的值都小於其根上的值 2.如右子樹不為空,那麼右子樹上的結點的值都大於其根上的值 3.其子樹也是乙個排序二叉樹。下面用遞...