leetcode_day21 今日任务: 530. 二叉搜索树的最小绝对差easy 501. 二叉搜索树中的众数easy 236. 二叉搜索树的最近公共祖先medium 530. 二叉搜索树的最小绝对差题目:(仅题干,示例请移步力扣) 给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值 。 差值是一个正数,其数值等于两值之差的绝对值。 思路: 由于是二叉搜索树,时刻牢记中序遍历二叉搜索树相当于 2024-06-13 #leetcode
leetcode_day20 今日内容 ● 654.最大二叉树 ● 617.合并二叉树● 700.二叉搜索树中的搜索● 98.验证二叉搜索树 最大二叉树一般写法题目实际上已经给出了递归逻辑,翻译成代码即可 给定一个不重复的整数数组nums。最大二叉树可以用下面的算法从nums递归地构建: 创建一个根节点,其值为nums中的最大值。 递归地在最大值左边的子数组前缀上构建左子树。 递归地在最大值右边的子数组后缀上构建右子树。 2024-06-11 #leetcode
leetcode_day18 今日内容 ● 513.找树左下角的值● 112. 路径总和 113.路径总和ii● 106.从中序与后序遍历序列构造二叉树 105.从前序与中序遍历序列构造二叉树 找树左下角的值递归写法递归代表深度优先搜索,所以对于这道题要求的bottom比较好把握,只要维护一个最深深度就行了,对于left,就要在递归逻辑上把握 当遇到叶子节点,根据深度判断是否维护,注意一定是深度比当前大才维护,不能相等 2024-06-09 #leetcode
leetcode_day17 今日内容: ● 110.平衡二叉树● 257. 二叉树的所有路径● 404.左叶子之和 平衡二叉树只是判断平衡二叉树,比较简单,按规范化思路来吧,避免一会有感觉秒了,一会没感觉卡了 递归结束条件:如果左子树不是平衡二叉树 或者 右子树不是平衡二叉树 或者 左右子树深度差距大于1 递归操作:判断左子树是不是平衡二叉树,判断右子树是不是平衡二叉树,获取左右子树深度 参数及返回值:根节点 + 是否合法 2024-06-07 #leetcode
leetcode_day16 今日内容: - 104.二叉树的最大深度- 559.n叉树的最大深度- 111.二叉树的最小深度- 222.完全二叉树的节点个数 树的最大深度最大深度指从根到所有节点的长度中最长的那一个,换言之就是要找离根最远的节点然后返回到它的长度。 用dfs和bfs都行,分别代表递归前后序遍历和层序遍历,对于n叉树而言,仅仅是多比较几次而已,改写难度不大 下附对于n叉树的bfs遍历 123456789101 2024-06-06 #leetcode
leetcode_day15 今日内容: - 102.层序遍历- 226.翻转二叉树- 101.对称二叉树 层序遍历思路就是用队列记录逐层,这样顺序不会变。进入一层时最好记录队列初长度,然后根据长度遍历该层,避免根据队列是否空而判断该层是否遍历结束,便于即时将子节点入队 123456789101112131415161718192021vector<vector<int>> levelOrder(Tr 2024-06-05 #leetcode
leetcode_day14 今日内容: 递归遍历 迭代遍历 统一迭代 三道例题: 前序遍历二叉树中序遍历二叉树后续遍历二叉树 递归遍历太过简单,skip 迭代遍历(非统一版)使用栈模拟递归过程: 前序就是先访问当前节点值,然后压栈右左孩子 123456789101112131415vector<int> preorderTraversal(TreeNode* root) { if(roo 2024-06-04 #leetcode
leetcode_day13 今日内容: 239. 滑动窗口最大值 347.前 K 个高频元素 239.滑动窗口最大值考验对于priority_queue数据结构的了解和掌握程度,不过不能当API选手,得知道怎么手写堆,不求随手手撕出大小顶堆,但是得知道大概写法。 关于priority_queue的感性理解在lc上看见了评论区大佬,关于priority_queue的比喻描述很形象,特引用至此: 单调队列真是一种让人感到 2024-06-03 #leetcode
leetcode_day11 今日内容: 20.有效的括号 1047.删除字符串中所有相邻重复项 150.逆波兰表达式求值 20.有效的括号其实这题跟最后一个逆波兰表达式有关,最后一题是逆波兰表达式求值,但是根据中缀表达式生成逆波兰表达式的算法里就会用到栈来处理中缀中的括号问题。 所以一个栈直接秒了,思路打开,碰到左括号别傻傻push左括号,而得push右括号,这样就可以直接判断top()了,而不用碰到右括号的时候再来个转 2024-06-01 #leetcode
leetcode_day10 此帖仅作打卡用,过于简单,建议跳过 232.用栈实现队列根据题意,用俩栈来回倒就行 code1234567891011121314151617181920212223242526272829303132333435class MyQueue {public: stack<int> q1; stack<int> q2; MyQueue() 2024-05-31 #leetcode