随笔分类 - 深度、广度优先遍历
摘要:BFS 我们遍历每个节点,每次遇到1得节点,类似扫雷中,将这个节点周围 得所有为1得节点全部置为0(这个步骤我们利用队列实现,不停将该节点周围 得节点压入队列直到维护条件不成立),每次将一个区域得1置为0,最后我们可以 计算出总共有几个搜索块,就是答案了 时间O(m*n)(需要遍历每个节点)空间O(
阅读全文
摘要:这题的难点在于怎么判断查询到的2个节点没有同一个父节点,因此我们每次遍历的 时候,就记录下当前节点的左右子节点,然后对下一层做判断,这样每一层遍历的时候 就能得出下一层的结果 时间O(n),空间O(n) 1 public boolean isCousins(TreeNode root, int x,
阅读全文
摘要:使用DFS求解 时间O(n),空间O(h)(h为整棵树的深度) 1 class Solution { 2 int res=0; 3 public int diameterOfBinaryTree(TreeNode root) { 4 def(root); 5 return res; 6 } 7 8
阅读全文
摘要:题目要求判断一棵树是否包含另一棵树,广度优先遍历由于需要维护一个队列, 这个队列会依次把每一层的节点全部压入队列,在本题中本层的其他节点会造成干扰项, 所以我们使用深度优先 方法一:深度优先遍历暴力破解 class Solution { public boolean isSubtree(TreeNo
阅读全文

浙公网安备 33010602011771号