tag_二叉树
文章平均质量分 58
nmslcsdn
菜菜的大数据开发之路
Java技术栈 AND 大数据开发,学习笔记, 拒绝水文
展开
-
23.<tag-二叉树和树的链化问题>补充: 剑指 Offer 36. 二叉搜索树与双向链表(同lt.426. 将二叉搜索树转化为双向链表) dbc
23.<tag-二叉树和树的链化问题>补充: 剑指 Offer 36. 二叉搜索树与双向链表(同lt.426. 将二叉搜索树转化为双向链表) dbc原创 2022-10-07 14:27:55 · 377 阅读 · 0 评论 -
22.<tag-二叉树和树的链化,构建问题>补充: lt.114. 二叉树展开为链表 + lt.108. 将有序数组转换为二叉搜索树 dbc
题目中,要求说是 in-place,之前一直以为这个意思就是要求空间复杂度是 O(1)O(1)。偶然看见评论区大神的解释, in-place 的意思可能更多说的是直接在原来的节点上改变指向,空间复杂度并没有要求。所以这道题也可以用递归解一下。原创 2022-10-05 13:11:00 · 400 阅读 · 0 评论 -
21.<tag-二叉树和树的构建问题>补充: lt.297. 二叉树的序列化与反序列化 dbc
【代码】21.<tag-二叉树和树的构建问题>补充: lt.297. 二叉树的序列化与反序列化 dbc。原创 2022-09-24 22:25:46 · 177 阅读 · 0 评论 -
20.<tag-二叉树和递归遍历问题>补充: lt.543. 二叉树的直径 + lt.124. 二叉树中的最大路径和
本道题等同于求一个节点左右子树的最大高度之和, 注意他跟104.二叉树的最大深度的区别在于, 他的路径可以不经过根节点.原创 2022-09-24 21:48:22 · 193 阅读 · 0 评论 -
19.<tag-二叉树和公共祖先问题>补充: lt.lt.236. 二叉树的最近公共祖先 + lt.235. 二叉搜索树的最近公共祖先 (同剑指Offer 61 I,II)
如果找到了 节点p或者q,或者遇到空节点,就返回。3, 确定单层递归逻辑值得注意的是, 本题函数有返回值, 是因为回溯的过程需要递归函数的返回值做判断, 但是本题我们依然要遍历树的所有结点。...原创 2022-08-31 12:18:28 · 284 阅读 · 0 评论 -
13.<tag-二叉树和BST基础>lt.701. 二叉搜索树中的插入操作0.5
X.<tag-数组和二分查找>-lt.xx-xxxxxx + lt.xx-xxxxxxlt.701. 二叉搜索树中的插入操作[案例需求][思路分析一, 带返回值的递归][代码实现]class Solution { //1. 递归函数, 插入值到树中, 返回值, 这棵树的根节点 public TreeNode insertIntoBST(TreeNode root, int val) { //2. 递归结束条件 if(root == null)re原创 2022-05-20 15:23:57 · 159 阅读 · 0 评论 -
18.<tag-二叉树和回溯(路径问题)>补充: lt.617. 合并二叉树 0.1
【代码】16.<tag-二叉树和回溯(路径问题)>补充: lt.617. 合并二叉树。原创 2022-08-31 11:07:55 · 192 阅读 · 0 评论 -
17.<tag-二叉树和回溯(路径问题)>补充:lt.129. 求根节点到叶节点数字之和 0.5
【代码】16.<tag-二叉树和回溯(路径问题)>补充:非根节点,叶节点的路径问题- lt.437. 路径总和 III (同面试题 04.12. 求和路径) dbc。原创 2022-08-29 14:45:15 · 211 阅读 · 0 评论 -
16.<tag-二叉树和对常规遍历的理解>补充: lt. 538. 把二叉搜索树转换为累加树(同lt.1038. 从二叉搜索树到更大和树) 2
比较无聊的一道题, 但是还是提醒我们, 不要忘了二叉树前中后序, 无时无刻不在各种各种的题目中得到应用。原创 2022-08-29 10:09:30 · 191 阅读 · 0 评论 -
15.<tag-二叉树和回溯(路径问题)>补充:非根节点,叶节点出发的路径和问题- lt.437. 路径总和 III (同面试题 04.12. 求和路径) dbc
【代码】14.<tag-二叉树和回溯(路径问题)>补充:非根节点,叶节点的路径问题- lt.437. 路径总和 III (同面试题 04.12. 求和路径) dbc。原创 2022-08-28 17:35:15 · 721 阅读 · 0 评论 -
14.<tag-二叉树和BST基础>lt.450. 删除二叉搜索树中的节点 0.5
lt.450. 删除二叉搜索树中的节点[案例需求][思路分析一, 递归法]不存在该节点, 遍历到了树的末尾. root == null;2. 存在该节点2.1 该节点的左子树, 右子树均为空, root置为null即可;2.2 该节点存在左子树, 直接root的直接左孩子节点代替root即可, 然后把这个节点删除2.3 该节点存在右子树, 直接root的直接右孩子节点代替root即可. 然后把这个节点删除[代码实现]class Solution { public int right原创 2022-05-21 14:13:07 · 230 阅读 · 0 评论 -
12.<tag-二叉树和BST基础>lt.501. 二叉搜索树中的众数 0.8
lt.501. 二叉搜索树中的众数[案例需求][思路分析][代码实现]lt.240-搜索二维矩阵 ||[案例需求][思路分析][代码实现]lt.240-搜索二维矩阵 ||[案例需求][思路分析][代码实现]X.<tag-数组和二分查找>-lt.xx-xxxxxx + lt.xx-xxxxxxlt.240-搜索二维矩阵 ||[案例需求][思路分析][代码实现]lt.240-搜索二维矩阵 ||[案例需求][思路分析][代码实现]lt.240-搜索二原创 2022-05-18 12:23:43 · 198 阅读 · 0 评论 -
11.<tag-二叉树和BST基础>lt.700. 二叉搜索树中的搜索 + lt.98. 验证二叉搜索树 + lt.530. 二叉搜索树的最小绝对差(同lt.783) 1
lt.700. 二叉搜索树中的搜索[案例需求][思路分析]这才是名副其实的简单题嘛BST: 二叉搜索树, 对于树中的每个节点,她的左节点的值都小于这个节点,她的右节点的值都大于这个节点;[代码实现一, 递归法]class Solution { //1. 递归函数, 查找BST, 返回值找到的节点 public TreeNode searchBST(TreeNode root, int val) { //2. 递归结束条件原创 2022-05-17 10:29:40 · 176 阅读 · 0 评论 -
10.<tag-二叉树和树的构建>lt.654. 最大二叉树 + lt.105. 从前序与中序遍历序列构造二叉树(同剑指.07) + lt.106. 从中序与后序遍历序列构造二叉树 1
lt.654. 最大二叉树[案例需求][思路分析]本题的大致逻辑是: 从一个数组中找出一个最大的数作为根节点, 然后这个数的左边的数用来构建左子树, 右边的数用来构建右子树.接着往下就是在左子树的范围内找出这个左子树的数组范围内最大的数作为这课左子树的根节点, 右子树也是如此操作, 一个子树的单层递归逻辑就是如此,其他的咱们也不用管了, 直接递归调用就完事了.[代码实现]/** * Definiti.........原创 2022-05-15 17:31:37 · 162 阅读 · 2 评论 -
9.<tag-二叉树和回溯>lt.112. 路径总和 + lt.113. 路径总和 ||(同剑指 Offer 34. 二叉树中和为某一值的路径) 0.5
X.<tag-数组和二分查找>-lt.xx-xxxxxx + lt.xx-xxxxxxlt.112. 路径总和[案例需求][思路分析一, 递归][代码实现]/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int原创 2022-05-14 14:35:55 · 226 阅读 · 0 评论 -
8.<tag-二叉树和回溯>lt.257. 二叉树的所有路径 0.5
X.<tag-数组和二分查找>-lt.xx-xxxxxx + lt.xx-xxxxxxlt.275.[案例需求][思路分析一, 递归法]这道题目要求从根节点到叶子的路径,所以需要前序遍历,这样才方便让父节点指向孩子节点,找到对应的路径。在这道题目中将第一次涉及到回溯,因为我们要把路径记录下来,需要回溯来回退一一个路径在进入另一个路径。前序遍历以及回溯的过程如图:我们先使用递归的方式,来做前序遍历。要知道递归和回溯就是一家的,本题也需要回溯。递归三部曲递归函数参数及返回值要传入原创 2022-05-13 15:09:09 · 281 阅读 · 0 评论 -
7.<tag-二叉树和完全二叉树的性质>lt. 958. 二叉树的完全性检验 1
lt. 958. 二叉树的完全性检验[案例需求][思路分析]对于一个完全二叉树,层序遍历的过程中遇到第一个空节点之后不应再出现非空节点[代码实现]//抄的class Solution { public boolean isCompleteTree(TreeNode root) { Queue<TreeNode> queue = new LinkedList<>(); TreeNode prev = root;原创 2022-05-11 14:27:10 · 154 阅读 · 0 评论 -
6.<tag-二叉树和遍历>lt.662. 二叉树的最大宽度+ 剑指 Offer 54. 二叉搜索树的第k大节点 + lt.230. 二叉搜索树中第K小的元素 2
X.<tag-数组和二分查找>-lt.xx-xxxxxx + lt.xx-xxxxxxlt.662. 二叉树的最大宽度[案例需求][思路分析一, 修改结点为索引, 标记结点位置]之前我们学过层序遍历, 对于层序遍历一般是采用队列存储节点,然后每一层结点如果要取前一个结点和后一个结点的话, 可以分别使用双端队列的 queue.peekFirst()和queue.peekLast() 实现,所以我们如果是求宽度的话, 可以在遍历下一层结点之前, 记录下来上一层第一个结点和最后一个结点的索引位置,原创 2022-05-09 19:20:34 · 440 阅读 · 0 评论 -
tag二叉树-刷题预备知识-0. 刷题必会的二叉树基础知识
文章目录二叉树的种类1. 满二叉树2. 完全二叉树3. 二叉搜索树(BST)4. 平衡二叉树(AVL)二叉树的存储方式二叉树的访问方式二叉树的定义二叉树的种类1. 满二叉树详细文章: 简单二叉树2. 完全二叉树若最底层为第 h 层,则该层包含 1~ 2^(h-1) 个节点。之前我们刚刚讲过优先级队列其实是一个堆,堆就是一棵完全二叉树,同时保证父子节点的顺序关系。3. 二叉搜索树(BST)4. 平衡二叉树(AVL)二叉树的存储方式二叉树的访问方式基础知识: 二叉树的原创 2022-05-09 11:55:37 · 152 阅读 · 0 评论 -
5.<tag-二叉树和基本性质>lt.404. 左叶子之和+ lt.513. 找树左下角的值 1
X.<tag-数组和二分查找>-lt.xx-xxxxxx + lt.xx-xxxxxxlt.257. 二叉树的所有路径[案例需求][思路分析一, 递归法][代码实现]/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode原创 2022-05-08 15:12:22 · 408 阅读 · 0 评论 -
4.<tag-二叉树和满二叉树, 完全二叉树, 平衡二叉树等树性质>-lt.222. 完全二叉树的节点个数+lt.110. 平衡二叉树 (同剑指 Offer 55 - II. 平衡二叉树) 1 dbc
lt.222. 完全二叉树的节点个数[案例需求][思路分析一, (DFS)通用递归写法][代码实现][思路分析二, (BFS)层寻遍历写法][代码实现][思路分析二, 针对完全二叉树性质的写法][代码实现]lt.240-搜索二维矩阵 ||[案例需求][思路分析][代码实现]lt.240-搜索二维矩阵 ||[案例需求][思路分析][代码实现]......原创 2022-05-07 19:59:02 · 585 阅读 · 2 评论 -
3.<tag-二叉树和翻转, 对称>-lt.226. 翻转二叉树(剑指 27)+ lt.101. 对称二叉树(剑指 28) + lt.100. 相同的树 + lt.572. 另一棵树的(剑指26) 2
lt.226. 翻转二叉树[案例需求]权威题解[思路分析一, 递归实现]我们在做二叉树题目时候,第一想到的应该是用 递归 来解决。仔细看下题目的 输入 和 输出,输出的左右子树的位置跟输入正好是相反的,于是我们可以递归的交换左右子树来完成这道题。[代码实现]/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * T原创 2022-05-06 11:13:11 · 211 阅读 · 0 评论 -
tag二叉树-刷题预备知识-3. 递归解题三部曲 + lt.104. 二叉树的最大深度(同剑指 55 - I) + lt.111.二叉树的最小深度 + lt.559. N 叉树的最大深度 1.5
文章目录递归解题三部曲例1:求二叉树的最大深度例2:两两交换链表中的节点例3:平衡二叉树一些可以用这个套路解决的题lt.104. 二叉树的最大深度lt.111.二叉树的最小深度本文转自天皇陛下; 写的还是挺不错的, 与代码随想录 搭配起来食用效果良好;递归解题三部曲何为递归?程序反复调用自身即是递归。我自己在刚开始解决递归问题的时候,总是会去纠结这一层函数做了什么,它调用自身后的下一层函数又做了什么…然后就会觉得实现一个递归解法十分复杂,根本就无从下手。相信很多初学者和我一样,这是一个思维误区,原创 2022-05-04 12:43:39 · 302 阅读 · 1 评论 -
2.<tag-二叉树和层序遍历相关题>-lt.116. 填充每个节点的下一个右侧节点指针 + lt.117. 填充每个节点的下一个右侧节点指针 II 1
lt.116. 填充每个节点的下一个右侧节点指针[案例需求][思路分析一, 迭代法][代码实现]lt.240-搜索二维矩阵 ||[案例需求][思路分析][代码实现]lt.240-搜索二维矩阵 ||[案例需求][思路分析][代码实现]......原创 2022-05-03 15:54:10 · 550 阅读 · 0 评论 -
1.<tag-二叉树和层序遍历相关题>lt.102(剑指32.II) + lt.103 + lt.107 + lt.199 + lt.637 + lt.429 + lt.515 + 剑指 32.I 2
X.<tag-数组和二分查找>-lt.xx-xxxxxx + lt.xx-xxxxxxlt. 102. 二叉树的层序遍历[案例需求][思路分析]二叉树的层序遍历可真是二叉树题目中的大明星了哈哈. 彻底的理解这道题有助于后面多达十几道不同类型题目的求解;[代码实现]lt.240-搜索二维矩阵 ||[案例需求][思路分析][代码实现]lt.240-搜索二维矩阵 ||[案例需求][思路分析][代码实现].........原创 2022-05-01 14:05:50 · 819 阅读 · 1 评论 -
tag二叉树-刷题预备知识-2. 二叉树的前中后序遍历递归, 迭代, Java实现 +lt.144. 二叉树的前序遍历 +lt.94. 二叉树的中序遍历 + lt.145. 二叉树的后序遍历 1.5
X.<tag-数组和二分查找>-lt.xx-xxxxxx + lt.xx-xxxxxx在本文章中, 将会阐述二叉树的三种遍历方式的递归和迭代写法;之前我们写过: tag二叉树-刷题预备知识-1. 深入浅出深度优先遍历(DFS)和广度优先遍历(BFS), 建议反复阅读几遍, 你会懂得,递归和深度优先遍历, 队列/栈和广度优先遍历几乎就是相辅相成的, 而且在你熟练掌握了DFS和BFS之后, 对于这种遍历的题目其实就能够信手拈来了;可能会有些朋友对二叉树的迭代比较发怵, 先学学上文的BFS!lt.原创 2022-04-26 17:50:21 · 1022 阅读 · 0 评论 -
tag二叉树-刷题预备知识-1. 深入浅出深度优先遍历(DFS)和广度优先遍历(BFS) + lt. 102. 二叉树的层序遍历 1
零, BFS, DFS 基本知识扫盲Java实现图的深度优先遍历(DFS)和广度优先遍历(BFS)一, BFS和DFS的比较DFS(深度优先搜索)和 BFS(广度优先搜索)就像孪生兄弟,提到一个总是想起另一个。然而在实际使用中,我们用 DFS 的时候远远多于 BFS。那么,是不是 BFS 就没有什么用呢?如果我们使用 DFS/BFS 只是为了遍历一棵树、一张图上的所有结点的话,那么 DFS 和 BFS 的能力没什么差别,我们当然更倾向于更方便写、空间复杂度更低的 DFS 遍历。不过,某些使用场景是转载 2022-03-21 13:45:11 · 688 阅读 · 0 评论