数据结构中的树
1. 樹
即是以層次化方式組織和存放數據的特定數據結構
邊:?節點與節點之間的連線
根節點:
葉子節點:
度:?節點的度數即為其分叉數, 即其子節點個數. 整棵樹的度數是所有節點中度數的最大值
節點深度:?根節點到該節點的唯一路徑長(即邊的數量)
樹高:?所有節點中深度的最大值
2. 二叉樹
每個節點最多有兩個子節點, 即左孩子和右孩子
平衡因子:?平衡因子是針對節點的一個概念, 節點左子樹的深度與右子樹的深度即為該節點的平衡因子.
2.1 二叉樹遍歷方式
2.2 完全二叉樹
一棵二叉樹, 除了最后一層之外, 每層節點都是滿的, 且最后一層所有節點都盡可能靠左. 如果一棵樹為完全二叉樹, 那么其可以用數組的形式表示.
性質:
1. 具有n個節點的完全二叉樹深度為, 這個向上取整的含義是, 假如n為8, 取對數的值正好為整數3, 但是也要向上取整, 層數便為4.
2. 具有奇數個節點的完全二叉樹的度為1的節點個數為0, 而具有奇數個節點的完全二叉樹的度為1的節點個數為1.
3.1 具有n個節點的完全二叉樹, 如果節點從1開始編號, 對于第i個節點:
i = 1, 為根節點
i > 1, 父節點為i / 2(取整), 如果2 * i <= n, 左子節點為2 * i, 如果2 * i <?n右子節點為2 * i + 1
3.2?具有n個節點的完全二叉樹, 如果用數組形式表示, 對于下標i:
i = 0, 為根節點
i > 0, 父節點為(i - 1) / 2(取整), 如果2 * (i + 1) <= n, 左子節點為2 * i + 1, 如果2 * i <?n右子節點為2 * i + 2?
2.2.1?堆
堆是一種特殊的完全二叉樹, 分為大頂堆和小頂堆, 大(小)頂堆即為所有節點的值均大(小)于等于其子節點(如果存在的話)的值. 如果用一個數組表示大頂堆(含有n個節點, 小頂堆相反), 對于下標為i的節點來說:
如果含有左子節點(2 * i + 1 < n), 那么有heap[i] >= heap[2 * i + 1] (右子節點省略)
堆可以用來排序
2.2.2 滿二叉樹
滿二叉樹即為最后一層也是滿的完全二叉樹, 即節點總數滿足.?
2.3 二叉搜索(查找)樹
性質:
樹上任意一個節點均滿足, 如果去左子樹不為空, 那么其左子樹上所有節點的值均小于等于其節點值, 右子樹如果不為空, 那么右子樹所有節點的值均大于等于其節點值. 增刪查的時間復雜度理想情況下是, 最壞情況是.
2.4 平衡二叉樹
性質:
所有節點的平衡因子的絕對值均不大于1的樹.
2.5 平衡二叉搜索樹(AVL樹)
2.6 紅黑樹
2.7 哈夫曼樹(最優二叉樹)
2.8 線索二叉樹
3. 多叉樹
3.1 B(B-)樹
3.2 B+樹
總結
- 上一篇: 二元置信椭圆r语言_医学统计与R语言:多
- 下一篇: 计算机网络 --- 数据链路层CSMA/