摘要: 题目描述: 设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。push(x) —— 将元素 x 推入栈中。pop() —— 删除栈顶的元素。top() —— 获取栈顶元素。getMin() —— 检索栈中的最小元素。示例:输入:["MinStack","push" 阅读全文
posted @ 2020-06-15 09:32 Jessey45 阅读(210) 评论(0) 推荐(0) 编辑
摘要: 题目描述: 给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7],返回它的最小深度 2. DFS:递归,与求最大深度相反,求最小深度,注意要考虑左子树或者右子树为 阅读全文
posted @ 2020-06-15 08:25 Jessey45 阅读(184) 评论(0) 推荐(0) 编辑
摘要: 题目描述: 给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点的左右两个子树的高度差的绝对值不超过1。示例 1:给定二叉树 [3,9,20,null,null,15,7],返回 true 。 常规解法:DFS递归,分别计算每个结点的左右子树的高度,再计 阅读全文
posted @ 2020-06-15 08:08 Jessey45 阅读(164) 评论(0) 推荐(0) 编辑
摘要: 题目描述: 将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。 首先想到的就是一边建立二叉排序树一边对树进行调整成为二叉平衡树,一般手动建树就是这种方法,建立二叉排序树就是选中第一个结点作为根结点, 阅读全文
posted @ 2020-06-14 10:47 Jessey45 阅读(175) 评论(0) 推荐(0) 编辑
摘要: 题目描述: 给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)例如:给定二叉树 [3,9,20,null,null,15,7],返回其自底向上的层次遍历为: [ [15,7], [9,20], [3] ] DFS:递归,从上到下遍历二叉树,每 阅读全文
posted @ 2020-06-13 09:48 Jessey45 阅读(190) 评论(0) 推荐(0) 编辑
摘要: 题目描述: 给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明:叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7],返回深度为3 深度优先遍历:先序遍历,可递归,可用栈 //C 递归 int maxDepth(st 阅读全文
posted @ 2020-06-13 09:35 Jessey45 阅读(159) 评论(0) 推荐(0) 编辑
摘要: 题目描述: 给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 DFS:递归,和100题相同的树类似,不过要注意是左右子树进行比较 //C //注意这个函数声明 bool isMirroTree(struct TreeNode* p, struct Tr 阅读全文
posted @ 2020-06-13 09:33 Jessey45 阅读(138) 评论(0) 推荐(0) 编辑
摘要: 题目描述: 给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。 深度优先遍历,递归或者用栈 //C //递归 bool isSameTree(struct TreeNode* p, struct TreeNode* q){ if(p = 阅读全文
posted @ 2020-06-12 13:13 Jessey45 阅读(187) 评论(0) 推荐(0) 编辑
摘要: 题目描述: 给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 num1 成为一个有序数组。说明:初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。 你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums 阅读全文
posted @ 2020-06-12 12:44 Jessey45 阅读(205) 评论(0) 推荐(0) 编辑
摘要: 题目描述:给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。示例 1:输入: 1->1->2输出: 1->2 双指针遍历:使用两个指针分别指向当前结点和当前结点的前一个结点,方便删除操作 //C struct ListNode* deleteDuplicates(struct ListN 阅读全文
posted @ 2020-06-12 09:15 Jessey45 阅读(192) 评论(0) 推荐(0) 编辑