
BFS
leagalhigh
never give up!
展开
-
图是否是树
图是否是树来自lintcode。 这里我用的方法是并查集。 基本思想: 对于有n个节点的树,首先生成一个n维数组,并初始化为自己的index,也就是他们的father指向自己。 并查集的操作有两个:find(int p)和union(int p, int q)。find是找到参数p的father,union是将p和q的father设置为一个。 在Solution里,对传进来的边依次进行find父原创 2017-01-15 11:51:05 · 342 阅读 · 0 评论 -
leetcode-542-01 Matrix
关于广度优先搜索的问题。 思路: 因为这道题是求值为1的点到值为0的区域的最短距离,因为是在图上求最短距离,所以可以用广度优先搜索方法求解,该方法在求最小生成树和迪杰斯特拉最短路径算法的思想中都有体现。本质上是有一个已知最优路线(最优一般指距离最短)区域,这个区域被放进queue中,这道题的这个区域就是0区域,所以一开始要将0区域都找出来,并把它们push进queue里,然后开始BFS,每遇到一个原创 2017-04-11 11:22:41 · 1554 阅读 · 0 评论 -
leetcode-515. Find Largest Value in Each Tree Row
利用队列;代码:/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * };原创 2017-04-15 13:51:46 · 198 阅读 · 0 评论 -
leetcode-310. Minimum Height Trees
考察点:图,遍历,bfs,路径; 思路:这个题就是从叶子节点开始遍历,去除掉当前所有的叶子节点后,再从新图的叶子节点开始遍历,直到最后剩下一个或者两个叶子节点,就是最深的那个点。C++ 代码:class Solution { public: vector<int> findMinHeightTrees(int n, vector<pair<int, int>>& edges) {原创 2017-05-09 10:34:12 · 190 阅读 · 0 评论