树、树、树
樹:
目前學過的基本數據結構
1.數組 鏈表 哈希表
哈希表本身是數組加鏈表? ?達到O(1)
不管存儲什么數字,根據數除以數組長度的余數
考慮一個鏈表,是O(n),短的話是O(1)
能不能降低時間復雜度
循環減半logn —— > 折半查找
有一個有序數組
進行查詢可以用一個折半查找法
?找到中間位置:首尾相加/2
數組必須有序才能達到logn
鏈表是可以達到logn時間復雜度
樹也是鏈式存儲,特殊的樹可以達到logn
先學一個,有序二叉樹
樹的根節點必須大于等于左子樹
必須小于等于右子樹
?畫一個特殊的樹
每次查詢折掉一半的數據,O(1)
樹的存取和讀取效率比較高。
樹的概念:
(樹可能有很多叉)
1.節點 根節點 父節點 子節點 葉子結點
2.節點的權(節點的值)
3.路徑:(從根節點到該節點走過的節點)
4.層
5.子樹
例如:畫圈的
6.樹的高度:有幾層
7.森林:多顆子樹構成森林
二叉樹:每個節點上最多有兩個節點稱為二叉樹。
滿二叉樹:最后一層的數據也是鋪滿的。
完全二叉樹:從上到下從左到右依次進行平鋪。
===================================================
二叉樹的遍歷說明
-
- 深度優先遍歷:
-
- 先序遍歷:先輸出父節點,再遍歷輸出左子樹,再遍歷輸出右子樹
-
-
- 中序遍歷 :先左再父再右
-
-
-
- 后序遍歷 2?3?4??6?8?7?5
-
-
- 廣度優先遍歷
- 層次遍歷 一層一層遍歷
- 廣度優先遍歷
總結
- 上一篇: 微信小程序:获取用户手机号码的过程
- 下一篇: AltiumDesigner设计PCB时