【資料結構與演算法】二分鐘初識樹
一:樹的定義
樹是一種資料結構,由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.中序遍歷
遍歷順序:遍歷左子樹--->訪問根節點--->遍歷右子樹

image.png
3.後序遍歷
遍歷順序:遍歷左子樹--->遍歷右子樹--->訪問根節點
