1. 廣度優先思想
適合題目:給定初始狀態跟目標狀態,要求從初始狀態到目標狀態的最短路徑。輔助資料結構是佇列。
1.1 prime最小生成樹;
1.2 dijkstra單源最短路徑演算法;
1.3 樹的分層遍歷,二叉樹的最小深度
1.4 走迷宮,從起點到終點的最短路徑;
定義乙個二維陣列:
int maze[5][5] = ;
它表示乙個迷宮,其中的1表示牆壁,0表示可以走的路,只能橫著走或豎著走,不能斜著走,要求程式設計序找出從左上角到右下角的最短路線。
1.5 最少翻轉次數:
拓展思路:雙向廣度優先搜尋
25個好友,根據六維理論,任何人之間的聯絡一定可以通過
6個人而間接認識,間接通過
n個人認識的,那他就是你的
n度好友,現在要你程式設計驗證這個
6維理論。
2. 深度優先思想
只保證有解,並不一定最優,輔助資料結構是棧。
2.1 求24點
2.2 不帶重複元素的全排列
public class solution
arraylistlist = new arraylist();
helper(rst, list, num);
return rst;
}public void helper(arraylist> rst, arraylistlist, int num)
for(int i = 0; i
public class solution
public void helper(arraylist> result, arraylistlist, int visited, int num)
for(int i = 0; i < num.length; i++)
visited[i] = 1;
list.add(num[i]);
helper(result, list, visited, num);
list.remove(list.size() - 1);
visited[i] = 0;
}}
}
2.4 島嶼的個數
public class solution ;
static int dy = ;
private int n, m;
private void removeisland(char grid, int x, int y) }}
}public int numislands(char grid)
m = grid[0].length;
if (m == 0)
int count = 0;
for (int i = 0; i < n; i++) }}
return count;}}
2.5 拓撲排序 劍指Offer 二叉搜尋樹的後序遍歷
輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則輸出yes,否則輸出no。假設輸入的陣列的任意兩個數字都互不相同。author zy date 2017年10月13日 下午9 34 21 decription 輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如...
劍指offer 二叉搜尋樹的後序遍歷
時間限制 1秒 空間限制 32768k 熱度指數 524747 本題知識點 棧 樹輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則輸出yes,否則輸出no。假設輸入的陣列的任意兩個數字都互不相同。這兩天狀態不行,沒多大刷題的動力。菜還不想動,說的大概就是我了。遞迴 大佬的思路...
劍指offer 二叉搜尋樹的後序遍歷
題目描述 輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是則輸出yes,否則輸出no。假設輸入的陣列的任意兩個數字都互不相同。簡單思路 二叉搜尋樹 1.左孩子 根 右孩子 2.bst的左孩子和右孩子都是bst 發現對於每一棵子樹,它的根結點總是對應該子樹的後序序列的最後乙個數 ...