随笔分类 -  深度、广度优先遍历

摘要:BFS 我们遍历每个节点,每次遇到1得节点,类似扫雷中,将这个节点周围 得所有为1得节点全部置为0(这个步骤我们利用队列实现,不停将该节点周围 得节点压入队列直到维护条件不成立),每次将一个区域得1置为0,最后我们可以 计算出总共有几个搜索块,就是答案了 时间O(m*n)(需要遍历每个节点)空间O( 阅读全文
posted @ 2021-05-26 10:36 jchen104 阅读(49) 评论(0) 推荐(0)
摘要:这题的难点在于怎么判断查询到的2个节点没有同一个父节点,因此我们每次遍历的 时候,就记录下当前节点的左右子节点,然后对下一层做判断,这样每一层遍历的时候 就能得出下一层的结果 时间O(n),空间O(n) 1 public boolean isCousins(TreeNode root, int x, 阅读全文
posted @ 2021-05-14 11:08 jchen104 阅读(56) 评论(0) 推荐(0)
摘要:使用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 阅读全文
posted @ 2021-05-05 17:07 jchen104 阅读(35) 评论(0) 推荐(0)
摘要:题目要求判断一棵树是否包含另一棵树,广度优先遍历由于需要维护一个队列, 这个队列会依次把每一层的节点全部压入队列,在本题中本层的其他节点会造成干扰项, 所以我们使用深度优先 方法一:深度优先遍历暴力破解 class Solution { public boolean isSubtree(TreeNo 阅读全文
posted @ 2021-04-14 10:29 jchen104 阅读(48) 评论(0) 推荐(0)