![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Data Structure
K.Sun
这个作者很懒,什么都没留下…
展开
-
Binary Tree Inorder Traversal
题目地址:https://leetcode.com/problems/binary-tree-inorder-traversal/description/Given a binary tree, return the inorder traversal of its nodes’ values.For example: Given binary tree [1,null,2,3],原创 2018-01-21 12:53:44 · 311 阅读 · 0 评论 -
图的深度优先遍历
图的深度优先遍历与树的先序遍历很像,唯一的区别也是图可以有环,树是不可以有环的,与广度优先遍历类似,也得搞一个标识数组,标记这个节点是否已经遍历过。例如在下图中: 比如从节点2开始,2可以到达0,并且节点0没有被遍历过,那么将0添加到遍历序列中,此时的遍历序列为2,0,然后节点0可以到节点1,节点1没有被遍历过,再把1添加到遍历序列,此时的遍历序列为2,0,1。0还可以到达2,但是2已经遍历过原创 2017-01-14 17:50:57 · 731 阅读 · 0 评论 -
Min Stack
题目地址:https://leetcode.com/problems/min-stack/Design a stack that supports push, pop, top, and retrieving the minimum element in constant time.push(x) – Push element x onto stack.pop() – Removes the e原创 2016-12-27 18:28:03 · 288 阅读 · 0 评论 -
二叉查找树的搜索与插入
原文地址:Binary Search Tree | Set 1 (Search and Insertion)下面是二叉查找树(BST)的定义:二叉查找树是一种基于二叉树的数据结构,它又下列属性:一个节点的key大于它左子树包含所有节点的key;一个节点的key小于它右子树包含所有节点的key;左右子树必须都是二叉查找树;树中不能有重复的节点。 二叉查找树的上述属性使得它们的key是有序的,翻译 2016-12-27 09:32:54 · 900 阅读 · 0 评论 -
Remove Linked List Elements
题目地址:https://leetcode.com/problems/remove-linked-list-elements/Remove all elements from a linked list of integers that have value val.Example Given: 1 –> 2 –> 6 –> 3 –> 4 –> 5 –> 6, val = 6 Return: 1原创 2016-12-19 22:41:15 · 257 阅读 · 0 评论 -
Merge Two Sorted Lists
题目地址:https://leetcode.com/problems/merge-two-sorted-lists/Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists.题目原创 2016-12-19 14:57:59 · 236 阅读 · 0 评论 -
Intersection of Two Linked Lists
题目地址:https://leetcode.com/problems/intersection-of-two-linked-lists/Write a program to find the node at which the intersection of two singly linked lists begins.For example, the following two linked li原创 2016-12-19 13:06:01 · 246 阅读 · 0 评论 -
Minimum Depth of Binary Tree
题目地址:https://leetcode.com/problems/minimum-depth-of-binary-tree/Given a binary tree, find its minimum depth.The minimum depth is the number of nodes along the shortest path from the root node down to t原创 2016-12-15 13:23:04 · 185 阅读 · 0 评论 -
Path Sum
题目地址:https://leetcode.com/problems/path-sum/Given a binary tree and a sum, determine if the tree has a root-to-leaf path such that adding up all the values along the path equals the given sum.For examp原创 2016-12-15 10:54:59 · 196 阅读 · 0 评论 -
Java中的LinkedList的方法的应用
LinkedList其实也就是我们在数据结构中的链表,这种数据结构有这样的特性:分配内存空间不是必须是连续的;插入、删除操作很快,只要修改前后指针就OK了,时间复杂度为O(1);访问比较慢,必须得从第一个元素开始遍历,时间复杂度为O(n);在Java中,LinkedList提供了丰富的方法,可以模拟链式队列,链式堆栈等数据结构,为用户带来了极大的方便,下面看看这些方法的用法:addboole原创 2016-12-17 17:10:40 · 47442 阅读 · 7 评论 -
Reverse Linked List
题目地址:https://leetcode.com/problems/reverse-linked-list/Reverse a singly linked list.就是翻转链表。逻辑很简单,但是从没用Java写过,写一个练练手吧。public class ReverseLinkedList { public ListNode reverseList(ListNode head) {原创 2016-12-09 22:36:41 · 169 阅读 · 0 评论 -
Implement Stack using Queues/Implement Queue using Stacks
题目地址:https://leetcode.com/submissions/detail/88638615/,https://leetcode.com/submissions/detail/88638372/无论是用栈实现队列还是用队列实现栈,在Java中提供给了我们LinkedList这样一个容器,它的操作足以满足我们模拟队列与栈的操作。队列模拟栈public class ImplementSta原创 2017-01-10 16:37:22 · 252 阅读 · 0 评论 -
数据结构——求树的最大深度或者树高
原文地址:Write a Program to Find the Maximum Depth or Height of a Tree已知一个二叉树,求它的高。空树的树高是0,下面的树的树高是3。 递归地计算一个节点的左右子树的树高,将高度设值为两个孩子最大高度加1。看下面的伪代码和程序的详细情况。算法:maxDepth()1. 如果树为空,那么返回02. 否则 (a) 递归得到左翻译 2016-12-01 22:51:15 · 16776 阅读 · 0 评论 -
循环数组
原文地址:http://www.geeksforgeeks.org/circular-array/如果一个数组的最后一个元素的下一个元素是整个数组的第一个元素,那么我们认为这个数组就是循环数组。循环数组也一般用队列来实现。例题:假设有n个人围坐着圆桌,他们的名字是A,B,C,D,……。给定一个名字,我们要做的就是打印出n个人的座次,从这个给定的人开始。 例如,假设有6个人ABCDEF,已知了D,那翻译 2017-12-18 19:41:43 · 11860 阅读 · 0 评论 -
利用分治法解决凸包问题
凸包的意思就是包含所有给定点的凸多边形。![这里写图片描述](http://img.blog.csdn.net/20170530091726010?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc2luYXRfMzYyNDYzNzE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gra翻译 2017-05-30 09:44:46 · 11017 阅读 · 0 评论 -
Convert BST to Greater Tree
题目地址:https://leetcode.com/problems/convert-bst-to-greater-tree/#/descriptionGiven a Binary Search Tree (BST), convert it to a Greater Tree such that every key of the original BST is changed to the orig原创 2017-05-11 14:03:07 · 592 阅读 · 0 评论 -
Find Largest Value in Each Tree Row
You need to find the largest value in each row of a binary tree.Example:Input: 1 / \ 3 2 / \ \ 5 3 9 Output: [1, 3, 9]还是做好行遍历就行了,代码与[Find Bottom Left T原创 2017-02-27 16:18:19 · 245 阅读 · 0 评论 -
Find Bottom Left Tree Value
题目地址:https://leetcode.com/problems/find-bottom-left-tree-value/?tab=DescriptionGiven a binary tree, find the leftmost value in the last row of the tree.Example 1:Input: 2 / \ 1 3Output:1Exam原创 2017-02-27 10:51:07 · 333 阅读 · 0 评论 -
Convert Sorted Array to Binary Search Tree
题目地址:https://leetcode.com/problems/convert-sorted-array-to-binary-search-tree/Given an array where elements are sorted in ascending order, convert it to a height balanced BST.题目要求将一个有序数组转换为一个平衡二叉树,很明显题原创 2017-02-13 19:27:52 · 452 阅读 · 0 评论 -
Odd Even Linked List
题目地址:https://leetcode.com/problems/odd-even-linked-list/Given a singly linked list, group all odd nodes together followed by the even nodes. Please note here we are talking about the node number and no原创 2017-01-20 09:46:03 · 250 阅读 · 0 评论 -
Linked List Random Node
题目地址:https://leetcode.com/problems/linked-list-random-node/Given a singly linked list, return a random node’s value from the linked list. Each node must have the same probability of being chosen.Follow原创 2017-01-19 13:14:31 · 263 阅读 · 0 评论 -
Palindrome Linked List
题目地址:https://leetcode.com/problems/palindrome-linked-list/Given a singly linked list, determine if it is a palindrome.Follow up: Could you do it in O(n) time and O(1) space?判断一个链表是不是回文的,这个题目的难度在单链表不能反原创 2017-01-18 19:11:49 · 220 阅读 · 0 评论 -
图的广度优先遍历
图的广度优先遍历与树的广度优先遍历差不多,可以说跟树的层级遍历差不多,但是还是有区别的,这个区别体现在图与树的区别,也就是说图可能有环路,而树是不可能有环路的。所以对于相同的节点,我们要尽量避免多次遍历。例如在下面的图中: 假设开始节点为2,那么2可以到达0,也可以到达3,那么此时此刻的遍历序列为2,0,3,再看0,0可以到达1,也可以到达2,1没遍历过,添加到遍历序列中,此时遍历序列为2,0原创 2017-01-12 20:24:28 · 695 阅读 · 0 评论 -
数据结构——线索二叉树
原文地址:Threaded Binary Tree遍历一个二叉树要么用递归,要么用附件的栈。线索二叉树的思想是让中序遍历更快,或者不用栈和递归。一个二叉树通过构建所有右孩子的指针建立索引,这个指针一般为NULL指向中序后继节点(如果存在的话)。线索二叉树有两种类型:单线索:使一个NULL右指针指向中序先驱(如果后继存在)双线索:左右NULL指针分别指向中序的先驱和中序的后继。在翻转中序遍历与后序遍历翻译 2016-11-26 21:32:11 · 442 阅读 · 0 评论 -
数据结构——不用栈、不用递归中序遍历树
原文地址:Inorder Tree Traversal without recursion and without stack!用Morris Traversal,我们可以不用递归和栈遍历树。Morris Traversal的思想是基于线索二叉树的。在这个遍历中,我们首先建立到中序先驱的连接,并用这些连接打印数据,最后恢复变化,还原出树的原貌。1. 初始化current为root 2. While翻译 2016-11-26 20:44:35 · 1089 阅读 · 0 评论 -
数据结构——非递归中序遍历树
原文地址:Inorder Tree Traversal without Recursion不用递归遍历树,那么很显然就是用栈了。下面是用栈遍历二叉树的算法。逐步执行这个算法请看这里。1) 建立一个空栈S。2) 初始化当前的节点作为根节点3) 将当前节点push到S中并设置current = current->left直到current为NULL4) 如果current为NULL并且stack不翻译 2016-11-26 20:22:56 · 884 阅读 · 0 评论 -
Binary Tree Level Order Traversal
题目地址:https://leetcode.com/problems/binary-tree-level-order-traversal/Given a binary tree, return the level order traversal of its nodes’ values. (ie, from left to right, level by level).For example: G原创 2016-12-12 18:57:56 · 166 阅读 · 0 评论 -
Balanced Binary Tree
题目地址:https://leetcode.com/problems/balanced-binary-tree/Given a binary tree, determine if it is height-balanced.For this problem, a height-balanced binary tree is defined as a binary tree in which the原创 2016-12-12 16:59:20 · 198 阅读 · 0 评论 -
Linked List Cycle
题目地址:https://leetcode.com/problems/linked-list-cycle/Given a linked list, determine if it has a cycle in it.Follow up: Can you solve it without using extra space? 题目要求判断一个单链表是不是有环,假设有两个指针p和q,都从前往后遍历这个原创 2016-12-12 16:38:18 · 270 阅读 · 0 评论 -
数据结构——查找二叉树已知节点的祖先节点
原文地址:Print Ancestors of a given node in Binary Tree已知一个二叉树和一个key,写一个函数打印出这个二叉树中已知节点的所有祖先节点。例如:如果已知的树是下面的二叉树,而且key是7,然后你的function应该打印出4,2和1。 1 / \ 2 3 /翻译 2016-12-03 16:44:48 · 7282 阅读 · 0 评论 -
数据结构——距离根节点为k的节点
原文地址:Print nodes at k distance from root已知一个树的根节点,一个整数k。打印出所有距离根节点为k的节点。例如,在下面的树中, 4, 5 & 8距离根节点的距离是2。这个问题可以用递归来解决。// Java program to print nodes at k distance from root/* A binary tree node has data,翻译 2016-12-03 16:20:34 · 2026 阅读 · 0 评论 -
数据结构——二叉树的最大宽度
原文地址:Maximum width of a binary tree已知一个二叉树,写一个函数得到已知二叉树的最大宽度。一个树的宽度指的是所有层的宽度的最大值。我们想一下下面的例子: 1 / \ 2 3 / \ \ 4 5 8 / \ 6翻译 2016-12-03 15:40:24 · 22178 阅读 · 0 评论 -
数据结构——根据后序遍历与中序遍历构建二叉树
原文地址:Construct a Binary Tree from Postorder and Inorder已知后续与中序遍历,构建树。例子:Input : in[] = {2, 1, 3}post[] = {2, 3, 1}Output : Root of below tree 1 / \ 2 3 Input : in[] = {4, 8,翻译 2016-12-03 14:59:07 · 535 阅读 · 0 评论 -
数据结构——根据中序遍历与先序遍历构建二叉树
原文地址:Construct Tree from given Inorder and Preorder traversals我们考虑下下面的遍历:中序遍历:D B E A F C 先序遍历:A B D E C F在一个先序序列中,最左端的元素就是树根。所以我们知道A是已知序列的根。通过查询A的中序序列,我们可以得到A左边左子树的所有元素和右边右子树的所有元素。所以我们现在知道了以下结构。翻译 2016-12-03 14:31:33 · 759 阅读 · 0 评论 -
Swap Nodes in Pairs
题目地址:https://leetcode.com/problems/swap-nodes-in-pairs/Given a linked list, swap every two adjacent nodes and return its head.For example, Given 1->2->3->4, you should return the list as 2->1->4->3.Yo原创 2016-12-11 15:44:48 · 223 阅读 · 0 评论 -
给定链表中某个节点的指针,删除链表中的该节点
这个问题最初的想法就获得给点节点之前的节点的位置即可,但是这样做再仔细想想貌似意义不是很大,至少从面试的角度感觉到面试官不想从这个角度让面试者去考虑问题,所以这里又有一个投机取巧的办法。那就是节点中前后节点信息唯一区别的地方就是该节点的data域!!!!!哈哈,找到这个关键点那么问题就解决了,在给定指针的前提下直接删除后面节点,然后将后面节点的值赋给当前位置,大功告成!注:该源码是参考别人的。#in原创 2016-10-16 14:16:13 · 890 阅读 · 0 评论 -
Binary Tree Level Order Traversal II
题目地址:https://leetcode.com/problems/binary-tree-level-order-traversal-ii/Given a binary tree, return the bottom-up level order traversal of its nodes’ values. (ie, from left to right, level by level fro原创 2016-12-12 19:04:21 · 175 阅读 · 0 评论 -
数据结构——确定一个二叉树是不是另一个二叉树的子树
原文地址:Check if a binary tree is subtree of another binary tree | Set 1已知两个二叉树,看一下第一个树是不是第二个树的子树。一个树T的子树是树S,这个树由是T中的一个节点及其它的下属节点组成的。子树对应的是根节点的话,那就是整个树;子树对应的是任意其他节点的话叫做正常子树(proper subtree)。例如,在下面的例子中,树S是树翻译 2016-12-04 14:17:10 · 584 阅读 · 0 评论 -
Sum of Left Leaves
Find the sum of all left leaves in a given binary tree.Example: 3 / \ 9 20 / \ 15 7There are two left leaves in the binary tree, with values 9 and 15 respectively. Return 24.求树的所有左叶子原创 2016-12-08 21:01:36 · 228 阅读 · 0 评论 -
数据结构——树的水平遍历
原文地址:Level Order Tree Traversal树的水平遍历就是广度优先遍历树。 上树的水平遍历顺序是:1 2 3 4 5。方法1 (用函数打印已知层)算法:这个方法里面有两个基本的函数。一个是打印已知层的所有节点(printGivenLevel),另一个是打印树的水平顺序遍历(printLevelorder)。printLevelorder用printGivenLevel逐个从翻译 2016-11-26 16:13:09 · 1114 阅读 · 0 评论