#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
(root.item)
self.forward(root.left)
self.forward(root.right)
def middle(self, root): #
中序遍歷 :左根右
if root ==none:
return
self.middle(root.left)
(root.item)
self.middle(root.right)
def back(self, root): #
後序遍歷 :左右根
if root ==none:
return
self.back(root.left)
self.back(root.right)
(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.其子樹也是乙個排序二叉樹。下面用遞...