建樹的幾種常用方法
方法一:
此方法適用條件:
1.當我們遍歷這顆樹時只需要從父節點查詢到子節點,不需要從子節點查詢到父節點.
2.所建樹為一顆二叉樹
實現程式碼:
class Tree{
int value;//代表該點的權值
int left_son;//左兒子編號
int right_son;//右兒子編號
int leftSide_value;//連線左兒子的邊的權值
int rightSide_value;//連線右兒子邊的權值
}
根據題目描述進行輸入.
如依次輸入 節點編號 節點權值 左兒子編號 右兒子編號 連線左兒子的邊的權值 連線右兒子邊的權值
for(int i=1;i<=n;i++)//n代表節點的個數
{num=sc.nextInt();
tree[num].value=sc.nextInt();
tree[num].left_son=sc.nextInt();
.......
}
方法二:
此方法適用條件:
1.當我們遍歷這顆樹時只需要從父節點查詢到子節點,不需要從子節點查詢到父節點.
2.此方法彌補了方法一的一個不足,方法一隻適用於二叉樹,不適用於有多個子節點的樹,而此方法可以可以有多個子節點
實現程式碼:
void add(int a, int b){//表示a為父 b為子
edge[cnt] = b;
ne[cnt] = last[a];
last[a] = cnt++;
}
相信看到這程式碼有點暈,當初我也是,看看下面的查詢的過程
我們在看看它的儲存結構,我們按輸入的順序給節點排隊,假設存在這樣一顆樹
數字代表輸入的順序,我們展示一下樹右邊是如何聯絡起來的(cnt代表的是輸入順序並不是點真正的編號,edge[cnt]才是點真正的編號)
故可得查詢程式碼
for(int i=last[a];i>=1;i=ne[i])
持續更新!
相關文章
- iframe跨域的幾種常用方法跨域
- Python教程: 反射及常用的幾種方法Python反射
- Linux埠轉發的幾種常用方法Linux
- iOS 開發中 runtime 常用的幾種方法iOS
- 幾種集合的幾種方法
- JS常用判斷空對像的幾種方法JS
- 外貿找客戶郵箱常用的幾種方法
- linux中後臺執行程式常用的幾種方法Linux行程
- 關於python單例的常用幾種實現方法Python單例
- 常用的幾種專案衝突管理的解決方法
- 檢視SQL執行計劃的幾種常用方法YQSQL
- [譯] 降維技術中常用的幾種降維方法
- 常用的jQuery事件有幾種?jQuery事件
- 幾種常用的排序程式碼排序
- Markdown常用的幾種語法
- 梨樹種植,樹苗常發生的幾種蟲害DJSJS
- 幾種常用的排序演算法排序演算法
- sqlplus常用的幾種登入方式SQL
- xml操作的幾種方法XML
- Python中常用的幾個內建方法(max()/min()、filter()、map()、sorted、reduce())PythonFilter
- 幾種常用程式語言的區別
- SQL隱碼攻擊的檢測方式有幾種?常用方法介紹!SQL
- js中我最常用的幾種遍歷處理資料的方法梳理JS
- Cesium 比較常用的幾個方法
- Laravel 重定向的幾種方法Laravel
- MATLAB 生成exe 的幾種方法Matlab
- css居中幾種方法CSS
- python常用內建方法Python
- 簡述幾種常用的排序演算法排序演算法
- 正規表示式最常用的幾種情形
- 幾種常用設計模式的簡單示例設計模式
- Java中幾種常用的RPC框架介紹JavaRPC框架
- 常用的幾種大資料架構剖析大資料架構
- 常用的幾個陣列方法與數學方法陣列
- Linux檢視內建命令和非內建命令幫助的幾種方法(man、help、info)Linux
- Python中清空list的幾種方法Python
- JavaScript深拷貝的幾種方法JavaScript
- 大資料分析的幾種方法大資料