![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
二叉树
有关二叉树的题与思想
安洁莉娅丶
这个作者很懒,什么都没留下…
展开
-
剑指Offer:树的子结构(JAVA实现)
原题初见这题。只能想到有遍历去做,但是又无从下手。看完题解发现是两个递归。其中两个递归都是先序遍历,学习了。注意,力扣上这道题中的B树为Null也是false。但是在剑指Offer书上说的是B数为null时,返回的应该是true。这里我不是很懂,我觉得剑指Offer说的应该才是正确的。代码中涉及两个递归:1、isSubStructure(A,B),先序遍历A树,把当前节点作都和B树去做比较。2、recur(A,B),对比A,B两棵树是否是一致的。用语言还是很难表达清楚,用图形最好表达了,原创 2020-12-08 16:38:30 · 141 阅读 · 0 评论 -
剑指Offer:重建二叉树(Java实现)
原题:点击此处这道题真的折磨了好几次,都还是不会。这次总结了几个关键点,希望下次再打的时候可以记住。关键点:可以使用哈希表来记住中序遍历的值对应的索引,这样就不用每次都过一次循环了。前序遍历最重要的作用就是找到根节点罢了,所以递归的时候传入根节点的位置就可以了,不用考虑前序遍历的开始和结束中序遍历要记住开始和结束,但是无论哪种情况,递归结束的重点都是left > right不要把tree当做参数传到递归里面,会引发引用错乱,而应该想下面的代码直接在递归中写出树的左节点和树的右节点。原创 2020-12-07 11:45:37 · 94 阅读 · 1 评论 -
力扣工作周刷题 - 102. 二叉树的层序遍历
2020.10.19原题:点击此处题解:用队列逐个进行扫描。时间复杂度:O(n)空间复杂度:O(n)接下来的一段时间要准备C++的一个比赛,因此以后的代码采用C++的形式;class Solution {public: vector<vector<int>> levelOrder(TreeNode* root) { vector<vector<int>> ret; if(!root){原创 2020-10-19 10:42:58 · 80 阅读 · 0 评论 -
力扣工作周刷题 - 94. 二叉树的中序遍历
2020.10.18原题:点击此处经典二叉树问题时间复杂度O(n)空间复杂度O(n)法1:递归。(dfs)class Solution { List<Integer> result = new ArrayList<>(); public List<Integer> inorderTraversal(TreeNode root) { dfs(root); return result; }原创 2020-10-18 17:16:25 · 160 阅读 · 1 评论 -
力扣工作周刷题 - 104. 二叉树的最大深度
2020.10.18原题:点击此处题解:真实刻在DNA的题。。二叉树DFS的超级经典题目。看代码应该就一目了然了。时间复杂度:O(n)空间复杂度:O(n)class Solution { public int maxDepth(TreeNode root) { if(root == null){ return 0; } int L_result = maxDepth(root.left); int原创 2020-10-18 16:01:10 · 106 阅读 · 0 评论 -
力扣每日一题 - 530. 二叉搜索树的最小绝对差
2020.10.12原题:点击此处考点:1、二叉搜索树(也叫二叉排序树)2、中序遍历二叉排序树的中序遍历是升序排序的。/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */class Solution {原创 2020-10-12 10:56:02 · 101 阅读 · 0 评论 -
力扣工作周刷题 - 617. 合并二叉树
2020.10.11原题:点击此处二叉树简单题。题解思路:DFS(深度优先搜索)二叉树常用思路。class Solution { public TreeNode mergeTrees(TreeNode t1, TreeNode t2) { if(t1 == null){ return t2; } if(t2 == null){ return t1; } //下面原创 2020-10-11 18:01:38 · 91 阅读 · 0 评论 -
力扣周末回顾12 - 820. 单词的压缩编码
2020.3.29力扣周末回顾非常重要的一道题第一次碰见字典树原题:点击此处题目:对存在相同后缀的单词进行压缩。(以后看到前缀,后缀的题目,优先想到字典树)题解:1.创建一棵字典树。根节点值域为空,其余节点的值域为26个字母中的一个,孩子节点是一个大小为26的节点数组,其余的节点同理。2.遍历所有单词,从单词的最后一个字母往第一个字母遍历,目的是为了得到检测后缀。(此处需要把单词...原创 2020-03-29 18:25:34 · 97 阅读 · 0 评论 -
力扣周末回顾4-543题二叉树的直径
周末回顾题4原题:点击此处考点:二叉树、遍历解题:1、利用递归,自下而上,分别计算节点的左孩子和右孩子的直径,并把最大的一个值往上return。2、此题最难的难点在于最长的直径不一定会路经过根节点,假如根节点的左孩子有很复杂的关系,那么很有可能路径会出现在孩子下面。于是有代码:ans = Math.max(ans,left+right);完整代码如下:/** * Defini...原创 2020-03-21 17:55:19 · 133 阅读 · 0 评论