摘要: 题目描述 思路 二叉树的最小深度就是第一个叶子节点所在的层数 方法一:前序遍历(递归、dfs) /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeN 阅读全文
posted @ 2023-12-27 18:02 Ac_c0mpany丶 阅读(12) 评论(0) 推荐(0)
摘要: 题目描述 思路 LeetCode104. 二叉树的最大深度 变种 方法一:后序遍历(递归、dfs) /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * Tre 阅读全文
posted @ 2023-12-27 18:02 Ac_c0mpany丶 阅读(16) 评论(0) 推荐(0)
摘要: 题目描述 思路 所谓二叉树的直径,就是左右子树的最大深度之和。 方法一: /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; 阅读全文
posted @ 2023-12-27 18:01 Ac_c0mpany丶 阅读(33) 评论(0) 推荐(0)
摘要: 题目描述 思路 熟练掌握二叉树的遍历算法 方法一:层序遍历(迭代)+计数 /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; 阅读全文
posted @ 2023-12-27 18:00 Ac_c0mpany丶 阅读(26) 评论(0) 推荐(0)
摘要: 题目描述 思路 方法一:递归 /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * Tree 阅读全文
posted @ 2023-12-27 17:59 Ac_c0mpany丶 阅读(15) 评论(0) 推荐(0)
摘要: 题目描述 思路 递归:额外写一个函数void postOrder(TreeNode node, List res) 迭代: 前序遍历:根 左 右 将前序遍历改造成:根 右 左 然后反转根右左为:左 右 根,即为后序遍历 优化一下: while (!stack.isEmpty()) { TreeNod 阅读全文
posted @ 2023-12-27 17:56 Ac_c0mpany丶 阅读(20) 评论(0) 推荐(0)
摘要: 题目描述 思路 熟练掌握迭代和递归的代码。 递归:额外写一个函数void inOrder(TreeNode node, List res) 迭代:令cur = root,一直往左子树找,找到最后一个左子节点,当cur为空,就开始处理栈顶元素(将栈顶元素加入结果集),随后将cur设置为右子节点,继续执 阅读全文
posted @ 2023-12-27 17:55 Ac_c0mpany丶 阅读(17) 评论(0) 推荐(0)
摘要: 题目描述 思路 熟练掌握迭代和递归的代码。 递归代码:额外写一个函数void preOrder(TreeNode node, List res) 迭代代码:会用到数据结构——栈。先入栈当前节点的右子节点,再入栈左子节点。 方法一:递归 /** * Definition for a binary tr 阅读全文
posted @ 2023-12-27 17:54 Ac_c0mpany丶 阅读(14) 评论(0) 推荐(0)