![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
递归
每天学一点!
时刻保持对知识的热情!
展开
-
2. 两数相加
题目描述给出两个非空的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0开头。示例输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -&...原创 2019-01-25 16:22:22 · 138 阅读 · 0 评论 -
leetcode589. N叉树的前序遍历
题目描述给定一个 N 叉树,返回其节点值的前序遍历。例如,给定一个3叉树:返回其前序遍历: [1,3,5,6,2,4]。思路1递归。代码/*// Definition for a Node.class Node {public: int val; vector<Node*> children; Node(...原创 2019-08-10 12:18:11 · 183 阅读 · 0 评论 -
leetcode145. 二叉树的后序遍历
题目描述给定一个二叉树,返回它的后序遍历。示例输入: [1,null,2,3] 1 \ 2 / 3输出: [3,2,1]进阶:递归算法很简单,你可以通过迭代算法完成吗?思路1递归。代码/** * Definition for a binary tree node. * struct Tr...原创 2019-08-10 12:40:49 · 81 阅读 · 0 评论 -
leetcode235. 二叉搜索树的最近公共祖先
题目描述给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”示例例如,给定如下二叉搜索树:root =[6,2,8,0,4,7,9,null,null,3,5]示例 1...原创 2019-08-11 10:24:07 · 97 阅读 · 0 评论 -
leetcode236. 二叉树的最近公共祖先
题目描述给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”示例例如,给定如下二叉树: root =[3,5,1,6,2,0,8,null,null,7,4]思路这...原创 2019-08-11 10:45:12 · 134 阅读 · 0 评论 -
leetcode297. 二叉树的序列化与反序列化
题目描述序列化是将一个数据结构或者对象转换为连续的比特位的操作,进而可以将转换后的数据存储在一个文件或者内存中,同时也可以通过网络传输到另一个计算机环境,采取相反方式重构得到原数据。请设计一个算法来实现二叉树的序列化与反序列化。这里不限定你的序列 / 反序列化算法执行逻辑,你只需要保证一个二叉树可以被序列化为一个字符串并且将这个字符串反序列化为原始的树结构。示例你可以将以下二...原创 2019-08-11 15:14:24 · 129 阅读 · 0 评论 -
leetcode24. 两两交换链表中的节点
题目描述给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例:1->2->3->4, 你应该返回2->1->4->3思路1递归。我提交的代码/** * Definition for singly-linked list. * st...原创 2019-05-17 13:41:47 · 100 阅读 · 0 评论 -
leetcode25. K 个一组翻转链表
题目妙速给你一个链表,每k个节点一组进行翻转,请你返回翻转后的链表。k是一个正整数,它的值小于或等于链表的长度。如果节点总数不是k的整数倍,那么请将最后剩余的节点保持原有顺序。示例给定这个链表:1->2->3->4->5当k= 2 时,应当返回: 2->1->4->3->5当k= 3 时,应当返回:...原创 2019-08-12 12:43:09 · 134 阅读 · 0 评论 -
leetcode109. 有序链表转换二叉搜索树
题目描述给定一个单链表,其中的元素按升序排序,将其转换为高度平衡的二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点的左右两个子树的高度差的绝对值不超过 1。示例给定的有序链表: [-10, -3, 0, 5, 9],一个可能的答案是:[0, -3, 9, -10, null, 5], 它可以表示下面这个高度平衡二叉搜索树: 0 / ...原创 2019-08-12 15:14:22 · 278 阅读 · 0 评论 -
leetcode429. N叉树的层序遍历
题目描述给定一个 N 叉树,返回其节点值的层序遍历。 (即从左到右,逐层遍历)。例如,给定一个3叉树:示例返回其层序遍历:[ [1], [3,2,4], [5,6]]说明:树的深度不会超过1000。树的节点总数不会超过5000。思路1迭代,BFS。代码/*// Definitio...原创 2019-08-21 17:43:45 · 136 阅读 · 0 评论 -
leetcode559. N叉树的最大深度
题目描述给定一个 N 叉树,找到其最大深度。最大深度是指从根节点到最远叶子节点的最长路径上的节点总数。示例例如,给定一个3叉树:我们应返回其最大深度,3。说明:树的深度不会超过1000。 树的节点总不会超过5000。思路递归求高度。代码/*// Definition for a Node.class Node {pu...原创 2019-08-21 18:02:10 · 109 阅读 · 0 评论 -
反转链表
题目描述反转一个单链表思路1-迭代假设链表为 1 -> 2 -> 3 -> nullptr反转后为3 -> 2 -> 1 -> nullptr(1)当遇到1时,将1->nullptr看成一个整体,提出来(2)当遇到2时,将1->nullptr这个整体放在2后面,形成一个新的整体,也就是2->1->nullpt...原创 2019-02-27 19:59:39 · 178 阅读 · 0 评论 -
leetcode617. 合并二叉树
题目描述给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为NULL 的节点将直接作为新二叉树的节点。示例输入: Tree 1 Tree 2 ...原创 2019-08-10 10:47:16 · 95 阅读 · 0 评论 -
leetcode938. 二叉搜索树的范围和
题目描述给定二叉搜索树的根结点root,返回L和R(含)之间的所有结点的值的和。二叉搜索树保证具有唯一的值。示例示例 1:输入:root = [10,5,15,3,7,null,18], L = 7, R = 15输出:32示例2:输入:root = [10,5,15,3,7,13,18,1,null,6], L = 6, R = 10输出:23...原创 2019-08-10 10:35:01 · 174 阅读 · 0 评论 -
树的子结构
题目描述输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)思路首先这题有点问题。这个子结构和子树完全是两个概念,假设B有只有一个结点,只要在A中找到这个结点值,那么B就是A的子结构。而给的程序接口是Subtree,这不误导人蛮。思路就是找A结点值和B结点值是否相同,相同了再去B是否包含于A中。。是包含的关系,和子树没有半毛钱的关系。...原创 2019-07-20 09:48:48 · 65 阅读 · 0 评论 -
leetcode105. 从前序与中序遍历序列构造二叉树
题目描述根据一棵树的前序遍历与中序遍历构造二叉树。注意:你可以假设树中没有重复的元素。示例例如,给出前序遍历 preorder =[3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树: 3 / \ 9 20 / \ 15 7思路前序是根左右,中序是左根右。...原创 2019-08-08 14:58:03 · 96 阅读 · 0 评论 -
leetcode106. 从中序与后序遍历序列构造二叉树
题目描述根据一棵树的中序遍历与后序遍历构造二叉树。注意:你可以假设树中没有重复的元素。示例例如,给出中序遍历 inorder =[9,3,15,20,7]后序遍历 postorder = [9,15,7,20,3]返回如下的二叉树: 3 / \ 9 20 / \ 15 7思路这题和leetcode105....原创 2019-08-08 15:33:11 · 121 阅读 · 0 评论 -
leetcode108. 将有序数组转换为二叉搜索树
题目描述将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点的左右两个子树的高度差的绝对值不超过 1。示例给定有序数组: [-10,-3,0,5,9],一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树: 0 / \ -3 9 /...原创 2019-08-08 16:27:03 · 126 阅读 · 0 评论 -
leetcode112. 路径总和
题目描述给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。说明:叶子节点是指没有子节点的节点。示例给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 1...原创 2019-08-08 18:24:13 · 98 阅读 · 0 评论 -
leetcode113. 路径总和 II
题目描述给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径。说明:叶子节点是指没有子节点的节点。示例给定如下二叉树,以及目标和sum = 22, 5 / \ 4 8 / / \ 11 13 4 ...原创 2019-08-09 12:18:44 · 95 阅读 · 0 评论 -
leetcode114. 二叉树展开为链表
题目描述给定一个二叉树,原地将它展开为链表。示例例如,给定二叉树 1 / \ 2 5/ \ \3 4 6将其展开为:1\ 2 \ 3 \ 4 \ 5 \ 6思路1递归思想。先找到左子树得最左节点,然后返回其父...原创 2019-08-09 15:19:45 · 98 阅读 · 0 评论 -
leetcode116. 填充每个节点的下一个右侧节点指针
题目描述给定一个完美二叉树,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下:struct Node { int val; Node *left; Node *right; Node *next;}填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。初始状态下,所有next...原创 2019-08-09 15:41:14 · 98 阅读 · 0 评论 -
leetcode117. 填充每个节点的下一个右侧节点指针 II
题目描述给定一个二叉树struct Node { int val; Node *left; Node *right; Node *next;}填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。初始状态下,所有next 指针都被设置为 NULL。示例输入:{"$id":"1...原创 2019-08-09 17:13:00 · 316 阅读 · 0 评论 -
leetcode129. 求根到叶子节点数字之和
题目描述给定一个二叉树,它的每个结点都存放一个0-9的数字,每条从根到叶子节点的路径都代表一个数字。例如,从根到叶子节点路径 1->2->3 代表数字 123。计算从根到叶子节点生成的所有数字之和。说明:叶子节点是指没有子节点的节点。示例示例 1:输入: [1,2,3] 1 / \ 2 3输出: 25解释:从根到叶...原创 2019-08-09 19:48:15 · 179 阅读 · 0 评论 -
leetcode144. 二叉树的前序遍历
题目描述给定一个二叉树,返回它的前序遍历。示例输入: [1,null,2,3] 1 \ 2 / 3输出: [1,2,3]进阶:递归算法很简单,你可以通过迭代算法完成吗?思路1递归很简单。代码/** * Definition for a binary tree node. * struct T...原创 2019-08-09 21:48:16 · 254 阅读 · 0 评论 -
数值的整数次方
题目描述给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。思路1循环只需要考虑以下情况就行了:(1)base为零的情况,此时应该返回0或者无意义。(2)exponent为负数的情况(3)时间复杂度O(n)思路1的代码class Solution {public: double Pow...原创 2019-02-27 13:18:24 · 93 阅读 · 0 评论