一種二叉樹遍歷方法

2021-08-08 08:32:47 字數 679 閱讀 7225

偽**如下:

inorder-tree-walk(x)

y = x

print x.key

x = x.left

while y != nil

y = y.right

while y != x

while x != nil

print x.key

x = x.left

while x.right == nil

x = x.p

x = x.right

print y.key

基本思路:

如上圖所示,節點的遍歷順序為:a-b-d-b-e-b-a-c-f-g-i-g-j-g-f-h

可以知道:n0的遍歷次數為1,n1的遍歷次數為2,n2的遍歷次數為3(其中n0為度為0的節點,n1為度為1的節點,n2為度為2的節點)。

因此該方法的遍歷次數為:a = n0 + 2 * n1 + 3 * n2(1)

我們知道:n0 = n2 + 1(2)

結合公式1和2我們可以得到:a = 4 * n2 + 2 * n1 + 1

所以當n2值越小是,這個遍歷方法的效率越高

二叉樹遍歷方法

二叉樹簡介 二叉樹是每個節點最多有兩個子樹的樹結構。通常被稱作左子樹 left subtree 和右子樹 right subtree 二叉樹常被用於實現二叉查詢樹二叉堆。二叉樹 深度為k 並且有2 k 1個節點的二叉樹稱為滿二叉樹。這種樹的特點是每一層的節點數都是最大節點數。而且在一棵二叉樹中,除最...

二叉樹遍歷的6種遍歷方法

二叉樹遍歷的6種遍歷方法 先序遍歷,中序遍歷,後序遍歷分別用遞迴跟非遞迴實現 主要 如下 include define true 1 define false 0 define ok 1 define error 0 define infeasible 1 define overflow 2type...

二叉樹層次遍歷的另一種思想

昨天刷題的時候,刷到乙個關於二叉樹層次遍歷的題,一直不理解為什麼二叉樹應用這麼廣泛,因為二叉樹的英文名是binary tree 二進位制數 讓我覺得不解。我發現,在二叉樹的層次遍歷中,每個層次的節點 都可以通過乙個層次位的二進位制數表示 根節點為0層 比如一顆滿二叉樹,從根節點到第三層要經過三次分叉...