劍指offer 遍歷搜尋

2021-07-05 06:54:02 字數 1652 閱讀 2365

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 發現對於每一棵子樹,它的根結點總是對應該子樹的後序序列的最後乙個數 ...