如果n=0,則他是空樹。
如果n>0,則其中存在唯一結點作為樹的根結點(root)。
除根結點外的其餘元素被分為m(m>=0)個互不相交的集合t1,t2…tm,每個子集本身也是一棵樹,被稱作根結點的子樹。
祖先結點:指按照路徑找到該結點所經過的結點,例如:a,b,d結點是i的祖先結點。
子孫結點: 祖先結點反過來就是子孫結點,例如i是d,b,a的子孫結點。
雙親結點:按照路徑找到該結點所經過的最近結點,例如:b是d的雙親結點,d是i的雙親結點。
孩子結點:雙親結點反過來就是孩子結點,例如:d是b的孩子結點,g是c的孩子結點。
雙親結點:擁有共同的雙親結點的結點互為兄弟結點,例如:d是e的兄弟節點,f是h的兄弟結點。
度:樹中乙個結點的子結點的個數為該結點的度,例如:c結點的度等於3. 而樹的度則是樹中最大的度數,例如圖中樹的度數為3,因為3是所有樹中所有結點的最大度數。
分支結點和葉子結點:度大於0的結點稱為分支結點,度等於0的結點稱為葉子節點。
結點的高度和深度:由葉子結點向上逐層累加,即結點b的高度為3。深度和高度相反,即b的深度為2。
鏈式儲存結構
先序遍歷(dlr):先遍歷根結點,然後遍歷左子樹,最後遍歷右子樹。
中序遍歷(ldr):先遍歷左子樹,然後遍歷根節點,最後遍歷右子樹。
後序遍歷(lrd):先遍歷左子樹,然後遍歷右子樹,最後遍歷根結點。
void
preorder
(bitree *bt)
/* bt為指向根結點的指標*/
}
所得結果為:124895367
void
inorder
(btnode *bt)
}
所得結果為:849251637
void
inorder
(btnode *bt)
}
所得結果為:89452673 二叉樹相關知識
先宣告一下,二叉樹我種了好久都沒有種出來,這只是他的一點兒相關知識而已 前序首先訪問根結點然後遍歷左子樹,最後遍歷右子樹。在遍歷左 右子樹時,仍然先訪問根結點,然後遍歷左子樹,最後遍歷右子樹,如果二叉樹為空則返回。例如,下圖所示二叉樹的遍歷結果是 abdecf 中序 中序遍歷左子樹。2 訪問根結點。...
二叉樹 二叉樹的相關操作
遞迴實現 建立求樹高 求葉子數 求節點數 統計度為2的結點個數 後序輸出 先序輸出 中序輸出 交換左右子樹 include include include define true 1 define false 0 define ok 1 define error 0 define overflow ...
樹和二叉樹(知識整理)
1 樹型結構是一類非常重要的非線性結構,樹型結構為 分支結構 一對多 層次結構 2 樹 tree 是n n 0 個結點的有限集合t,若n 0時稱為空樹,否則 1 有且只有乙個特殊的稱為樹的根 root 結點 根是入口 2 若n 1時,其餘的結點被分為m m 0 個互不相交的子集t1,t2,t3.其中...