Fork me on GitHub

随笔分类 -  数据结构

摘要:给定一个二叉树,返回它的 前序 遍历。 示例:输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,2,3]进阶: 递归算法很简单,你可以通过迭代算法完成吗? 递归:class Solution {public: vector res; v... 阅读全文
posted @ 2018-11-29 22:46 lMonster81 阅读(99) 评论(0) 推荐(0)
摘要:对链表进行插入排序。从第一个元素开始,该链表可以被认为已经部分排序(用黑色表示)。每次迭代时,从输入数据中移除一个元素(用红色表示),并原地将其插入到已排好序的链表中。 插入排序算法:插入排序是迭代的,每次只移动一个元素,直到所有元素可以形成一个有序的输出列表。 每次... 阅读全文
posted @ 2018-11-29 22:42 lMonster81 阅读(127) 评论(0) 推荐(0)
摘要:根据逆波兰表示法,求表达式的值。有效的运算符包括 +, -, *, / 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。说明:整数除法只保留整数部分。 给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。示例 1:输入: ["... 阅读全文
posted @ 2018-11-29 22:20 lMonster81 阅读(108) 评论(0) 推荐(0)
摘要:给定一个二叉树,它的每个结点都存放一个 0-9 的数字,每条从根到叶子节点的路径都代表一个数字。例如,从根到叶子节点路径 1->2->3 代表数字 123。计算从根到叶子节点生成的所有数字之和。说明: 叶子节点是指没有子节点的节点。示例 1:输入: [1,2,3] 1... 阅读全文
posted @ 2018-11-27 22:13 lMonster81 阅读(116) 评论(0) 推荐(0)
摘要:给定一个二叉树struct TreeLinkNode { TreeLinkNode *left; TreeLinkNode *right; TreeLinkNode *next; }填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点... 阅读全文
posted @ 2018-11-27 22:12 lMonster81 阅读(113) 评论(0) 推荐(0)
摘要:给定一个二叉树,原地将它展开为链表。例如,给定二叉树1 / \ 2 5 / \ \ 3 4 6将其展开为:1 \ 2 \ 3 \ 4 \ 5 \ 6 class Solution {public:TreeNode *last = NULL; void flat... 阅读全文
posted @ 2018-11-27 22:11 lMonster81 阅读(107) 评论(0) 推荐(0)
摘要:给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径。说明: 叶子节点是指没有子节点的节点。示例:给定如下二叉树,以及目标和 sum = 22,5 / \ 4 8 / / \ 11 13 4 / \ / \ 7 2 5 1返回:[ [5,... 阅读全文
posted @ 2018-11-27 22:10 lMonster81 阅读(185) 评论(0) 推荐(0)
摘要:给定一个单链表,其中的元素按升序排序,将其转换为高度平衡的二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。示例:给定的有序链表: [-10, -3, 0, 5, 9], 一个可能的答案是:[0, -3, 9, -... 阅读全文
posted @ 2018-11-26 20:58 lMonster81 阅读(82) 评论(0) 推荐(0)
摘要:根据一棵树的中序遍历与后序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出中序遍历 inorder = [9,3,15,20,7] 后序遍历 postorder = [9,15,7,20,3]返回如下的二叉树:3 / \ 9 20 / \ 15 7 c... 阅读全文
posted @ 2018-11-26 20:58 lMonster81 阅读(70) 评论(0) 推荐(0)
摘要:根据一棵树的前序遍历与中序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出前序遍历 preorder = [3,9,20,15,7] 中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树:3 / \ 9 20 / \ 15 7 cl... 阅读全文
posted @ 2018-11-26 20:57 lMonster81 阅读(72) 评论(0) 推荐(0)
摘要:给定一个二叉树,返回其节点值的锯齿形层次遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。例如:给定二叉树 [3,9,20,null,null,15,7],3 / \ 9 20 / \ 15 7返回锯齿形层次遍历如下:[ [3], [20... 阅读全文
posted @ 2018-11-26 20:57 lMonster81 阅读(79) 评论(0) 推荐(0)
摘要:给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。例如:给定二叉树: [3,9,20,null,null,15,7],3 / \ 9 20 / \ 15 7返回其层次遍历结果:[ [3], [9,20], [15,7] ] class... 阅读全文
posted @ 2018-11-26 20:56 lMonster81 阅读(78) 评论(0) 推荐(0)
摘要:给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:节点的左子树只包含小于当前节点的数。 节点的右子树只包含大于当前节点的数。 所有左子树和右子树自身必须也是二叉搜索树。示例 1:输入: 2 / \ 1 3 输出: true示例 2:输入... 阅读全文
posted @ 2018-11-24 21:27 lMonster81 阅读(137) 评论(0) 推荐(0)
摘要:给定一个二叉树,返回它的中序 遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,3,2]进阶: 递归算法很简单,你可以通过迭代算法完成吗? 递归:class Solution {public: vector res; vec... 阅读全文
posted @ 2018-11-24 21:27 lMonster81 阅读(117) 评论(0) 推荐(0)
摘要:给定一个链表和一个特定值 x,对链表进行分隔,使得所有小于 x 的节点都在大于或等于 x 的节点之前。你应当保留两个分区中每个节点的初始相对位置。示例:输入: head = 1->4->3->2->5->2, x = 3 输出: 1->2->2->4->3->5 c... 阅读全文
posted @ 2018-11-24 21:25 lMonster81 阅读(108) 评论(0) 推荐(0)
摘要:给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。示例 1:输入: 1->2->3->3->4->4->5 输出: 1->2->5示例 2:输入: 1->1->1->2->3 输出: 2->3 新设置一个头节点 class Solu... 阅读全文
posted @ 2018-11-23 23:43 lMonster81 阅读(69) 评论(0) 推荐(0)
摘要:给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。示例 1:输入: 1->2->3->4->5->NULL, k = 2 输出: 4->5->1->2->3->NULL 解释: 向右旋转 1 步: 5->1->2->3->4->NULL ... 阅读全文
posted @ 2018-11-23 23:29 lMonster81 阅读(123) 评论(0) 推荐(0)
摘要:给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。示例:给定 1->2->3->4, 你应该返回 2->1->4->3.说明:你的算法只能使用常数的额外空间。 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 class Solution {p... 阅读全文
posted @ 2018-11-19 17:54 lMonster81 阅读(94) 评论(0) 推荐(0)
摘要:给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的 n 保证是有效的。进阶:你能尝试使用一趟扫描实现吗? 方法一... 阅读全文
posted @ 2018-11-17 18:50 lMonster81 阅读(91) 评论(0) 推荐(0)

/*评论*/ /*top按钮*/

/* 网易云控件 */