【資料結構與演算法】二分鐘初識樹

蝸牛201發表於2019-04-04

一:樹的定義

樹是一種資料結構,由n(n>1)個有限結點組成一個有層次關係的集合。形狀像一顆倒立的樹而得名。分為:無序樹,有序樹,二叉樹,滿二叉樹,完全二叉樹,平衡二叉樹(AVL),二叉查詢樹(二叉搜尋樹、BST),霍夫曼樹,紅黑樹,B-tree(B-樹或者B樹),B+樹,B*樹等。

 

節點結構體(C/C++)表示為:

typedef struct treeNode
{
    void *val;                  //資料項,任意型別
    struct treeNode *left;      //左子節點指標 
    struct treeNode *right;     //右子節點指標
}node;

 

節點類(Java)表示為:

public class TreeNode {
    private Object data;            //資料項
    private TreeNode leftChild;     //左子節點的引用
    private TreeNode rightChild;    //右子節點的引用
}

 

二:樹的特點

1.根節點沒有父節點。

2.每個非根節點只有一個父節點。

3.每個節點有零個或多個子節點。

 

三:相關術語

1.節點的度:節點含有子樹的個數

2.葉子節點:節點的度為0。

3.子節點:一個節點含有的子樹的根節點稱為該節點的子節點。(這句有點繞口,舉例:上圖a,b,c是R的子節點)

4.父節點:含有子節點的節點,成為子節點的父節點。

5.兄弟節點:父節點相同的節點。

6.堂兄弟節點:父節點為兄弟節點的節點。

7.樹的度:最大的節點的度稱為樹的度

8.樹的高度或深度:樹種節點的最大層次。

9.森林:n(n>=0)顆互不相交樹的集合。

四:樹的遍歷

1.前序遍歷

遍歷順序:訪問根節點--->遍歷左子樹--->遍歷右子樹

 

 

2.中序遍歷

遍歷順序:遍歷左子樹--->訪問根節點--->遍歷右子樹

3.後序遍歷

遍歷順序:遍歷左子樹--->遍歷右子樹--->訪問根節點

 

 

相關文章