二叉樹簡介
二叉樹是每個節點最多有兩個子樹的樹結構。通常被稱作左子樹(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...