数据结构
7yangyang
这个作者很懒,什么都没留下…
展开
-
[python 数据结构]二叉树遍历
二叉树是有限个元素的集合,该集合或者为空、或者有一个称为根节点(root)的元素及两个互不相交的、分别被称为左子树和右子树的二叉树组成。二叉树的每个结点至多只有二棵子树(不存在度大于2的结点),二叉树的子树有左右之分,次序不能颠倒。二叉树的第i层至多有2^{i-1}个结点深度为k的二叉树至多有2^k-1个结点;对任何一棵二叉树T,如果其终端结点数为N0,度为2的结点数为N2,则N0=N2+...转载 2019-04-03 22:39:15 · 89 阅读 · 0 评论 -
Python 链表反转
# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: def reverseList(self, head: ListNode) -> L...转载 2019-05-07 22:07:18 · 265 阅读 · 0 评论 -
[Python LeetCode]237. 删除链表中的节点(yangyang)
题目:请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。现有一个链表 – head = [4,5,1,9],它可以表示为:示例 1:输入: head = [4,5,1,9], node = 5输出: [4,1,9]解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.示例 2:...原创 2019-05-09 22:29:11 · 101 阅读 · 0 评论 -
[Python LeetCode]235. 二叉搜索树的最近公共祖先(yangyang)
思路:这道题我们可以用递归来求解,我们首先来看题目中给的例子,由于二叉搜索树的特点是左<根<右,所以根节点的值一直都是中间值,大于左子树的所有节点值,小于右子树的所有节点值,那么我们可以做如下的判断,如果根节点的值大于p和q之间的较大值,说明p和q都在左子树中,那么此时我们就进入根节点的左子节点继续递归,如果根节点小于p和q之间的较小值,说明p和q都在右子树中,那么此时我们就进入根节...原创 2019-05-09 22:15:17 · 194 阅读 · 0 评论 -
[Python LeetCode]226. 翻转二叉树(yangyang)
题目:翻转一棵二叉树。示例:输入: 4 / \ 2 7 / \ / \1 3 6 9输出: 4 / \ 7 2 / \ / \9 6 3 1备注:这个问题是受到 Max Howell 的 原问题 启发的 :谷歌:我们90%的工程师使用您编写的软件(Homebrew),但是您却无法在...原创 2019-05-09 21:57:33 · 138 阅读 · 0 评论 -
[Python LeetCode]141. 环形链表(yangyang)
题目:给定一个链表,判断链表中是否有环。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。示例 1:输入:head = [3,2,0,-4], pos = 1输出:true解释:链表中有一个环,其尾部连接到第二个节点。思路:1.因为链表只有一个前驱和一个后继,所以如果链表有环,则该环必然...原创 2019-05-13 21:50:05 · 111 阅读 · 0 评论 -
[Python LeetCode] 225. 用队列实现栈(yangyang)
题目:使用队列实现栈的下列操作:push(x) – 元素 x 入栈pop() – 移除栈顶元素top() – 获取栈顶元素empty() – 返回栈是否为空注意:你只能使用队列的基本操作-- 也就是 push to back, peek/pop from front, size, 和 is empty 这些操作是合法的。你所使用的语言也许不支持队列。 你可以使用 list 或者 d...原创 2019-05-08 23:12:24 · 206 阅读 · 1 评论 -
[Python LeetCode] 234. 回文链表(yangyang)
题目:请判断一个链表是否为回文链表。示例 1:输入: 1->2输出: false示例 2:输入: 1->2->2->1输出: true进阶:你能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题?思路:回文链表反转前后肯定一致代码:# Definition for singly-linked list.# class ListNode:#...原创 2019-05-08 22:57:15 · 183 阅读 · 0 评论 -
[Python LeetCode] 203.移除链表元素(yangyang)
题目:删除链表中等于给定值 val 的所有节点。示例:输入: 1->2->6->3->4->5->6, val = 6输出: 1->2->3->4->5思路:为了判断方便,循环条件为head.next,若当前节点的值==val,指针指向next.next,否则正常赋值。# Definition for singly-li...原创 2019-05-05 23:38:20 · 181 阅读 · 0 评论 -
[Python LeetCode]110_平衡二叉树(yangyang)
题目:给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。示例 1:给定二叉树 [3,9,20,null,null,15,7] 3 / \ 9 20 / \ 15 7返回 true 。示例 2:给定二叉树 [1,2,2,3,3,null,null,4,4]...原创 2019-04-09 21:50:44 · 163 阅读 · 0 评论 -
[Python LeetCode]108_将有序数组转换为二叉搜索树(yangyang)
题目:将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。示例:给定有序数组: [-10,-3,0,5,9],一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树: 0 / \ -3 9 / / -10...原创 2019-04-09 21:29:34 · 143 阅读 · 0 评论 -
[Python LeetCode] 155. 最小栈(yangyang)
题目:设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。push(x) – 将元素 x 推入栈中。pop() – 删除栈顶的元素。top() – 获取栈顶元素。getMin() – 检索栈中的最小元素。示例:MinStack minStack = new MinStack();minStack.push(-2);minStack.push(0);...原创 2019-04-15 20:28:02 · 105 阅读 · 0 评论 -
[Python LeetCode]101_对称二叉树(yangyang)
题目:给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。代码:# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# ...原创 2019-04-08 21:58:26 · 106 阅读 · 0 评论 -
[Python LeetCode] 107_二叉树的层次遍历 II(yangyang)
题目:给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)例如:给定二叉树 [3,9,20,null,null,15,7],3/ 9 20/ 15 7返回其自底向上的层次遍历为:[[15,7],[9,20],[3]]代码,参考了网络的一些答案# Definition for a binary tree ...原创 2019-04-08 21:18:32 · 150 阅读 · 0 评论 -
[Python LeetCode]111_二叉树的最小深度(yangyang)
题目:给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最小深度 2.代码:# Definition for a binary tree node.#...原创 2019-04-11 21:31:32 · 97 阅读 · 0 评论 -
[python 数据结构]二叉树深度
二叉树有深度和高度两个属性,一个节点的深度指的是从根节点到该节点路径的长度,根节点的深度为1;一个节点的高度指的是从该节点到叶子节点所有路径上包含节点个数的最大值。叶子节点的高度为1,往上节点的高度依次递增。所以要求二叉树的深度,我们要求出从根节点到叶子结点最长路径的长度,从根节点到所有的叶子结点,实际就是在遍历这棵树,使用深度优先遍历可以解决这个问题。首先还是定义一颗二叉树的类。 然后,为...转载 2019-04-03 23:08:01 · 346 阅读 · 0 评论 -
[Python LeetCode] 100_相同的树(yangyang)
题目:给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。示例 1:输入: 1 1/ \ / 2 3 2 3 [1,2,3], [1,2,3]输出: true示例 2:输入: 1 1/ 2 ...转载 2019-04-03 23:04:19 · 98 阅读 · 0 评论 -
[Python LeetCode]257. 二叉树的所有路径(yangyang)
题目:给定一个二叉树,返回所有从根节点到叶子节点的路径。说明: 叶子节点是指没有子节点的节点。示例:输入: 1 / \2 3 \ 5输出: ["1->2->5", "1->3"]解释: 所有根节点到叶子节点的路径为: 1->2->5, 1->3思路:基本算法就是二叉树的遍历,首先想到的是深度优先遍历。难...原创 2019-05-22 21:41:58 · 434 阅读 · 0 评论