相比於我熟悉的深度優先搜尋策略,寬度優先搜尋**如下。
這是層次遍歷**。
/**
* definition for a binary tree node.
* struct treenode
* };
*/class solution
if(t->right)
}result.push_back(level);
}return result;
}};
上面是層次遍歷**,下面是把bfs結果都存進乙個vector裡。就改被注釋掉的**,再加一行就可以了,基本沒變。
/**
* definition for a binary tree node.
* struct treenode
* };
*/class solution
if(t->right) }}
return result;
}};
下是用dfs實現層次遍歷
vector
> result;
vector
> levelorderbottom(treenode* root)
void bfs(treenode* root,int level)
);result[level].push_back(root->val);
bfs(root->left,level+1);
bfs(root->right,level+1);
}
其中,最重要的是傳遞了level這個引數,然後讓每個節點在對應的vector中儲存
就是這一句很重要
result
[level]
.push_back(root->val);
寬度優先搜尋
include using namespace std const int n 700 const int inf 0x3f3f3f3f int dir 10 int n,a,b,ans 1000000 flag 0 int floor n struct node int check node tm...
寬度優先搜尋
寬度優先搜尋演算法 又稱廣度優先搜尋 是最簡便的圖的搜尋演算法之一,這一演算法也是很多重要的圖的演算法的原型。dijkstra單源最短路徑演算法和prim最小生成樹演算法都採用了和寬度優先搜尋類似的思想。其別名又叫bfs,屬於一種盲目搜尋法,目的是系統地展開並檢查圖中的所有節點,以找尋結果。換句話說...
寬度優先搜尋
寬度優先搜尋也是搜尋的手段之一。它與深度優先搜尋類似,從某個狀態出發探索所有可以到達的狀態。const int inf 100000000 使用pair表示狀態時,使用typedef會更加方便一些 typedef pair p char maze max n max m 1 表示迷宮的字串陣列 in...