學習筆記 排序二叉樹 2020 7 27

2021-10-08 13:58:31 字數 2060 閱讀 6195

排序二叉樹

亂序資料的插入的時候,需要遵從乙個準則:

由結果可以看出,排序二叉樹中利用中序遍歷可以獲得有序數列

例:對3,8,5,7,6,2,9,4,1亂序數字進行排列。

# 排序二叉樹

# 建立節點

class

node()

:def

__init__

(self, item)

: self.item = item

self.right =

none

self.left =

none

# 建立乙個樹

class

sorttree()

:def

__init__

(self)

: self.root =

none

# 插入節點

defadd

(self, item)

: node = node(item)

cur = self.root

# 判斷特殊情況:當根節點為空那麼直接賦值插入的第乙個元素

if self.root ==

none

: self.root = node

return

# 普通情況:若比根節點小插入到根節點左側,若比根節點大插入到根節點右側

while

true

:# 向右插入節點

if cur.item < item:

# 如果根節點小於插入節點

if cur.right ==

none

:# 插入節點的前提是右葉子節點空

cur.right = node

return

else

: cur = cur.right # 移位

# 向左插入節點

else

:if cur.left ==

none

: cur.left = node

return

else

: cur = cur.left

# 前序遍歷

defforward

(self, root)

:if root ==

none

:return

print

(root.item)

self.forward(root.left)

self.forward(root.right)

# 中序遍歷

defmiddle

(self, root)

:if root ==

none

:return

self.forward(root.left)

print

(root.item)

self.forward(root.right)

# 後序遍歷

defback

(self, root)

:if root ==

none

:return

self.forward(root.left)

self.forward(root.right)

print

(root.item)

alist =[3

,8,5

,7,6

,2,9

,4,1

]tree = sorttree(

)for i in alist:

tree.add(i)

# tree.forward(tree.root)

tree.middle(tree.root)

# tree.back(tree.root)

二叉樹,排序二叉樹

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

二叉樹學習筆記

二叉樹是樹的一種特殊結構,也是一種極為重要的樹,二叉樹最重要的操作是遍歷,即按照一定的順序訪問樹中的所有節點,常見的遍歷方式有 對遍歷來說,最容易想到的方式就是遞迴,遞迴 簡單,但是效率不高,需要的棧空間比較大,非遞迴的方法 較為複雜,不過效率較高。遞迴實現 void preordervisit b...

二叉樹學習筆記

1.訪問根節點 2.在訪問第 l 層時,將 l 1 層的節點按順序儲存到佇列中 3.進入下一層並訪問該層的所有節點 4.重複上述操作直到所有層都訪問完 時間複雜度 o n 空間複雜度o n 最壞的情況下,最後一層的所有節點可能在佇列中 void levelorder node root q.dele...