dfs
深度优先
雄狮少年
落霞与孤鹜齐飞,秋水共长天一色。渔舟唱晚,响穷彭蠡之滨,雁阵惊寒,声断衡阳之浦
展开
-
(二叉树复习) (DFS)(三道类似的题)二叉树的直径、最长同值路径、二叉树最大路径和 Leetcode90
二叉树的直径 题目描述 思路 遍历每一个节点,以每一个节点为中心点计算最长路径(左子树边长+右子树边长),更新全局变量max。 代码及注释 class Solution { int max = 0; public int diameterOfBinaryTree(TreeNode root) { if(root == null){ return 0; } dfs(root); return max原创 2022-03-05 14:31:39 · 291 阅读 · 0 评论 -
二叉树中和为某一值的路径(push,pop;add,removeLast;offer,pollLast ) ( 模拟添加完结点后,立马更新target并且判断target是否为0)Leetcode51
递归是线程安全的, 最开始的一条路不返回的话,下一条路永远不会开始 但是在只有一个工作数组的情况下,一条路结束以后要创建数组的副本,来防止下一条路上的操作对前一条路的结果造成污染 class Solution { List<List<Integer>> res; public List<List<Integer>> pathSum(TreeNode root, int target) { // ...原创 2022-02-20 23:24:23 · 656 阅读 · 1 评论 -
(父亲镜像 儿子又镜像) 二叉树的镜像 Leetcode 49
、 class Solution { public TreeNode mirrorTree(TreeNode root) { return dfs(root); //只有一开始的返回值能用到 } public TreeNode dfs(TreeNode root){ if(root == null){ return root; } TreeNode tem =...原创 2022-02-19 13:03:59 · 696 阅读 · 0 评论 -
(主函数递归寻找匹配的首节点,dfs函数递归进行递归匹配) 树的子结构 Leetcode 48
class Solution { public boolean isSubStructure(TreeNode A, TreeNode B) { if(A == null || B ==null){ return false; } return dfs(A,B) || dfs(A,B) || isSubStructure(A.left,B) || isSubStructure(A.right, ...原创 2022-02-19 12:50:30 · 100 阅读 · 0 评论 -
(深度优先搜索+可行性剪枝后 赋值型标记)找到矩阵中是否存在某路径 + 机器人的运动范围 Leetcode39
class Solution { public boolean exist(char[][] board, String word) { char[] words = word.toCharArray(); for(int i=0;i<board.length;i++) { for (int j = 0; j < board[0].length; j++) { ...原创 2022-02-18 13:23:04 · 476 阅读 · 0 评论 -
二叉树的序列化与反序列化 leetcode 29
public class Codec { // Encodes a tree to a single string. public String serialize(TreeNode root) { if (root == null) { return "X,"; } String left = serialize(root.left); String right = seriali...原创 2022-02-16 17:50:23 · 47 阅读 · 0 评论 -
二叉搜索树的最近公共祖先 Leetcode 29
暴力深搜: class Solution { public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) { return dfs( root, p, q); } public TreeNode dfs(TreeNode root, TreeNode p, TreeNode q){ if(root...原创 2022-02-16 13:13:52 · 275 阅读 · 0 评论 -
二叉树的最大路径和 Leetcode28
路径和 树原创 2022-02-16 11:58:22 · 160 阅读 · 0 评论 -
二叉树的最近公共祖先(注意不是二叉搜索树)Leetcode 27
公共祖先,树原创 2022-02-16 11:15:50 · 144 阅读 · 0 评论 -
验证二叉搜索树 Leetcode 26
验证二叉搜索树原创 2022-02-16 10:35:43 · 245 阅读 · 0 评论 -
对称二叉树 (递归“自扫自家” 递归的重点在于考虑边界条件以及制定递归出口)Leetcode 28
· 根据上面信息可以总结出递归函数的两个条件: 终止条件: left 和 right 不等,或者 left 和 right 都为空 递归的比较 left.left 和 right.right,递归比较 left.right 和 right.left 代码: class Solution { public boolean isSymmetric(TreeNode root) { if (root ==...原创 2022-02-16 12:29:40 · 65 阅读 · 0 评论