二叉樹遍歷方法

2021-09-24 18:11:34 字數 1671 閱讀 5530

​ 二叉樹簡介

二叉樹是每個節點最多有兩個子樹的樹結構。通常被稱作左子樹(left subtree)和右子樹(right subtree),二叉樹常被用於實現二叉查詢樹二叉堆。

二叉樹  深度為k  並且有2^k-1個節點的二叉樹稱為滿二叉樹。這種樹的特點是每一層的節點數都是最大節點數。而且在一棵二叉樹中,除最後一層外,若其餘層都是滿的 並且最後一層或者是滿的,或者是在右邊缺少連續的若干個節點,則稱為完全二叉樹。具有n個節點的完全二叉樹的深度為floor(log2n)+1.深度為k的完全二叉樹至少有2^(k-1)個葉子節點,至多有2^k-1個節點。

二叉樹遍歷

二叉樹的遍歷分為三種情況  分別為 先序,中序,後序  

1  先序(根左右)

先序遍歷順序為 根節點 ,左子樹,右子樹   

步驟

觀察**  先找根節點 ,找對應根節點的左子樹 ,後找右子樹,  按順序查

根節點——>對應根節點的左子樹(直到訪問的左子樹無葉子節點位置)——>最後向上找右子樹

ab->abd->abdh->abdhi->abdhiejk->abdhiejkcfml

->abdhiejkcfmlgnop

abdhiejkcfmlgnop

2 中序(左根右)

訪問左子樹。【先訪問左子樹中的左子樹,再訪問左子樹中的右子樹。】直到訪問到葉子結點後輸出。 輸出根。

訪問右子樹。【先訪問右子樹中的左子樹,再訪問右子樹中的右子樹。】直到訪問到葉子結點後輸出。

左子樹中的左子樹(直到無節點)——> 根 ——> 右子樹 

先找a 的左子樹 1  ,再找b 的左子樹 2,再找 d 的左子樹  3. 3沒有左子樹  左根右 原則 3輸出 hi   2 輸出 hid 

4 輸出 jek

1 輸出 hidbjek

總 的左子樹部分  hidbjek

根                        a

a 的右子樹 5,5的左子樹 6 lmf  5 的根節點 c  輸出 lmfc

5的 右子樹 7 輸出 ng ,7的 右子樹8 輸出po  

總的右子樹 lmfcngpo  

即 中序排列

hidbjek  a  lmfcngpo

3  後序(左右根)

先輸出1 的  左子樹 2 的左子樹 3  ihd 

4 輸出 jke

1 輸出 ihdjkeb

6 輸出lmf ,8輸出 po ,7輸出npog

5 輸出 lmfnpogc

即總右子樹  lmfnpogc 

後序 ihdjkeb lmfnpogc  a

構建二叉樹 遍歷二叉樹

陣列法構建二叉樹 public class main public static void main string args 用陣列的方式構建二叉樹 public static void createbintree 把linkedlist集合轉成二叉樹的形式 for int j 0 j 最後乙個父節...

二叉樹的遍歷方法

二叉樹的遍歷有三種方式,如下 1 前序遍歷 dlr 首先訪問根結點,然後遍歷左子樹,最後遍歷右子樹。簡記根 左 右。2 中序遍歷 ldr 首先遍歷左子樹,然後訪問根結點,最後遍歷右子樹。簡記左 根 右。3 後序遍歷 lrd 首先遍歷左子樹,然後遍歷右子樹,最後訪問根結點。簡記左 右 根。例1 如上圖...

二叉樹的遍歷方法

include include include using namespace std typedef struct node bintree typedef struct node1 btnode void preorder1 bintree root 遞迴前序遍歷 void inorder1 b...