随笔分类 -  数据结构与算法

摘要:leetcode 617. Merge Two Binary Trees 合并二叉树(简单)直接用递归调用给定函数,先判断如果root1为空返回root2,如果root2为空返回root1,都存在的情况下建立新节点node,然后对root1和root2的左子节点调用递归并赋给node的左子节点,再对root1和root2的右子节点调用递归并赋给node的右子节点,返回node即可。 阅读全文
posted @ 2022-09-27 12:59 okokabcd 阅读(54) 评论(0) 推荐(0)
摘要:leetcode 208. Implement Trie (Prefix Tree)  实现 Trie (前缀树) (中等)字典树的插入、删除和查找都不难,用一个一重循环即可,即第i次循环找到前i个字母所对应的子树,然后进行相应的操作。实现这棵字母 树,可以用最常见的数组保存即可(静态开辟内存)。至于节点对儿子的指向,一般有三种方法: 阅读全文
posted @ 2022-09-26 13:07 okokabcd 阅读(56) 评论(0) 推荐(0)
摘要:leetcode 669. Trim a Binary Search Tree 修剪二叉搜索树 (简单)什么是二叉查找树? 二叉查找树(Binary Search Tree,BST)是一种特殊的二叉树:对于每个父节点,其左子树中所有节点的值小于等于父节点的值,其右子树中所有节点的值大于等于父节点的值。 利用二叉查找树的大小关系,我们可以很容易地利用递归进行树的处理。 阅读全文
posted @ 2022-09-24 19:53 okokabcd 阅读(31) 评论(0) 推荐(0)
摘要:二叉树的遍历,常见的有先序遍历、中序遍历、后序遍历和层序遍历,它们用uxjv实现起来都非常简单; 考虑使用非递归来实现,用到时stack来辅助转自,由于先序遍历的顺序为 根左右 阅读全文
posted @ 2022-09-23 13:12 okokabcd 阅读(60) 评论(0) 推荐(0)
摘要:leetcode 105. Construct Binary Tree from Preorder and Inorder Traversal 从前序与中序遍历序列构造二叉树(中等)本题要求用先序和中序遍历来建立二叉树,由于先序的顺序的第一个肯定是根,所以原二叉树的根节点可以知道,题目中给了一个很关键的条件就是树中没有相同元素,有了这个条件就可以在中序遍历中也定位出根邛的位置,并以根节点的位置将中序遍历拆分为左右两个部分,分别对其递归调用原函数。 阅读全文
posted @ 2022-09-22 13:30 okokabcd 阅读(48) 评论(0) 推荐(0)
摘要:leetcode 637. Average of Levels in Binary Tree 二叉树的层平均值(简单)求一个二叉树每层的平均值,利用广度优先搜索,我们可以很方便地求取每层的平均值。直接使用queue,直接将每层的值累计加起来除以该层的节点个数,存入结果ans中即可。 阅读全文
posted @ 2022-09-15 21:16 okokabcd 阅读(44) 评论(0) 推荐(0)
摘要:leetcode 1110. Delete Nodes And Return Forest  删点成林(中等)二叉树的题首先想到用递归,递归方法传递4个参数,当前节点;是否是根节点(如果是根节点、且存在左右子树才会形成新树);再传递一个hashset用来存储要删除的节点,达到常数据级搜索;还有一个保存结果的list。 阅读全文
posted @ 2022-09-14 14:12 okokabcd 阅读(59) 评论(0) 推荐(0)
摘要:leetcode 110. Balanced Binary Tree 平衡二叉树(简单)思路:定义一个求各个节点深度的函数,然后中每个节点的两个子树来比较深度差,针对每个点都会被计算深度时访问一次进行优化,如果发现子树不平衡,则不计算具体的深度,而是直接返回-1,优化后的谅赤:对于每一个节点,通过checkDepth方法递归获得左右子树的深度,如果子树是平衡的,则返回真实的深度,若不平衡,直接返回-1。 阅读全文
posted @ 2022-09-13 12:53 okokabcd 阅读(34) 评论(0) 推荐(0)
摘要:leetcode 543. Diameter of Binary Tree 二叉树的直径(简单)求二叉树的直径,其实就是求根节点左右两个子树的深度之和。我们只要对每个节点求出其左右子树深度之和,这个值作为一个候选值。 阅读全文
posted @ 2022-09-09 13:01 okokabcd 阅读(73) 评论(0) 推荐(0)
摘要:双层递归实现,注意分情况考虑:1、如果选取该节点加入路径,则之后必须继续加入连续节点,或停止加入节点;2、如果不选取该节点加入路径,则对其左右节点进行重新考虑。因此一个方便的方法是我们创建一个辅函数,专门用来计算连续加入节点的路径。 阅读全文
posted @ 2022-09-08 20:17 okokabcd 阅读(99) 评论(0) 推荐(0)
摘要:leetcode 101. Symmetric Tree 对称二叉树(简单)(1)如果两个子树都为空指针,则它们相等或对称(2) 如果两个子树只有一个为空指针,则它们不相等或不对称(3)如果两个子树根节点的值不相等, 则它们不相等或不对称(4)根据相等或对称要求,进行递归处理。 阅读全文
posted @ 2022-09-07 13:13 okokabcd 阅读(79) 评论(0) 推荐(0)
摘要:leetcode 114. Flatten Binary Tree to Linked List 二叉树展开为链表(简单)思路:非迭代版实现,从根节点开始出发,先检测其左子节点是否存在,如存在则将根节点和其右节点断开,将左子节点及其后面所有结构一起连接到右子节点的位置,把原右子节点连到原左子节点为最后面的右子节点之后。 阅读全文
posted @ 2022-09-06 16:03 okokabcd 阅读(64) 评论(0) 推荐(0)
摘要:leetcode 104. Maximum Depth of Binary Tree 二叉树的最大深度(简单)思路二:也可以用层序遍历二叉树,然后计数总层数,即为二叉树的最大深度,需要注意的是while循环中的for循环的写法,一定要将q.size()放在初始化里,而不能放在普快停止的条件中,因为q的大小是随时变化的,所以放在停止条件中会出错。 阅读全文
posted @ 2022-09-05 12:59 okokabcd 阅读(65) 评论(0) 推荐(0)
摘要:leetcode 83. Remove Duplicates from Sorted List 删除排序链表中的重复元素(简单)思路:如果下一个元素和当前元素的值相等,这个元素的下个元素就等于下个元素的下个元素,继续循环。 阅读全文
posted @ 2022-09-04 18:55 okokabcd 阅读(58) 评论(0) 推荐(0)
摘要:leetcode 148. Sort List 排序链表(中等)用快慢指针将列表分成两部分,将两部分列表递归排序,再将排序后的列表合并 阅读全文
posted @ 2022-09-04 18:21 okokabcd 阅读(64) 评论(0) 推荐(0)
摘要:leetcode 21. Merge Two Sorted Lists 合并两个有序链表(简单)还是分递归和迭代两种思路来实现,要理解链表 阅读全文
posted @ 2022-09-02 13:04 okokabcd 阅读(65) 评论(0) 推荐(0)
摘要:leetcode 206. Reverse Linked List 反转链表(简单)用迭代和递归来实现,迭代思路:在原镮之前建立一个空的prev节点,因为首节点会变,从head开始,将之后的一个节点移到prev之后,重复此操作直到head成为末节点为止 阅读全文
posted @ 2022-09-01 20:35 okokabcd 阅读(66) 评论(0) 推荐(0)
摘要:leetcode 409 Longest Palindrome 最长回文串(简单)思路:先统计每个字符出现的次数,再遍历统计后的字符次数,如果是偶数次,那么一定可以是回文字符串的一部分,加上该次数;如果是奇数n字,那么加上n-1次;最后判断如果出现过奇数次的字符,那么最后结果加1。 阅读全文
posted @ 2022-08-31 13:22 okokabcd 阅读(71) 评论(0) 推荐(0)
摘要:leetcode 28. Implement strStr() 实现 strStr()(简单)思路2:遍历线字符串,只需要遍历m-n长度即可,这样可以提高运算效率。然后对每个字符,都遍历一遍子字符串,一个一个字符的对应比较,如果对应位置有不等的,则跳出循环,如果一直没有跳出循环,则说明子字符串出现了,返回起始位置即可。 阅读全文
posted @ 2022-08-30 12:56 okokabcd 阅读(46) 评论(0) 推荐(0)
摘要:leetcode 227. Basic Calculator II 基本计算器 II(中等)如果我们在字符串左边加上一个加号,可以证明其不改变运算结果,且字符串可以分割成多个<运算符, 数字>对子的形式;这样一来我们就可以从左往右处理了。由于乘除的优先级高于加减,因此我们需要使用一个中间变量来存储高优先度的运算结果。 阅读全文
posted @ 2022-08-29 13:11 okokabcd 阅读(94) 评论(0) 推荐(0)