
递归
0_o_c
这个作者很懒,什么都没留下…
展开
-
不增加空间的情况下,将数组的后k位整体移到前面
1、题目:不增加空间的情况下,将数组的后k位整体移到前面。 例如:1,2,3,4,5,6。当k=2时,移动结果是5,6,1,2,3,4。k=3时,6,5,4,1,2,3...... 这是实验室师兄面试时的一道题目,要求是给定20分钟写出代码 2、解法1:设数组大小为n,先保存a[n-k+i],然后将不用移动的n-k个元素后移: for(i=0;i<k2;i++){ int t=a原创 2016-09-23 11:10:37 · 1088 阅读 · 0 评论 -
二叉搜索树与双向链表
1、链接:二叉搜索树与双向链表 来源:牛客网 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。2、思路:中序遍历,遍历的是链表的第一个元素时,构建双向链表;遍历的不是第一个元素时,将该元素放到链表的最后面,然后将指向最后面的endNode移后一位;3、代码:public class TreeConvertLinkList {原创 2017-10-01 11:41:37 · 278 阅读 · 0 评论 -
二叉搜索树的第k个结点
1、链接:二叉搜索树的第k个结点 来源:牛客网 给定一颗二叉搜索树,请找出其中的第k大的结点。例如, 5 / \ 3 7 /\ /\ 2 4 6 8 中,按结点数值大小顺序第三个结点的值为4。2、思路:中序遍历 3、代码:public class KthNode { int pos = 0; TreeNode res = null; boolean isContine原创 2017-09-27 12:49:14 · 355 阅读 · 0 评论 -
对称的二叉树
1、链接:对称的二叉树 来源:牛客网 请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。2、思路:采用递归 3、代码:boolean isSymmetrical(TreeNode pRoot) { boolean res = true; if (pRoot == null) re原创 2017-09-27 12:27:09 · 337 阅读 · 0 评论 -
判断二叉搜索树是否是平衡二叉树
1、判断二叉搜索树是否是平衡二叉树 输入一棵二叉树,判断二叉搜索树是否是平衡二叉树。2、思路:采用递归,算出某次递归左右子树的高度,根据高度差来判断是否满足要求,在递归中有一次高度差大于1时,即不满足。3、代码: public boolean IsBalanced_Solution(TreeNode root) { if(root == null) re原创 2017-09-25 00:43:25 · 860 阅读 · 0 评论 -
从尾到头打印链表
1、来源:从尾到头打印链表 输入一个链表,从尾到头打印链表每个节点的值。 2、思路: 第一种方法,利用栈的先进后出特性; 第二种方法,递归 第三种方法,反转链表,还没尝试,待续 3、代码:/* * 利用栈来实现 */ /*public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {原创 2017-09-24 23:38:15 · 219 阅读 · 0 评论 -
二叉树中和为某一值的路径
1、来源:二叉树中和为某一值的路径 来源:牛客网输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。 3、思路: 先序遍历的方法,当到达叶子节点时判断是否符合要求; 保存路径的过程中,用一条公共的list保存每一条路径(保存到二维数组根据该list new一个来保存),一次递归完成后,记得将使用list.re原创 2017-09-24 17:40:00 · 322 阅读 · 0 评论 -
由前序和中序数组重建二叉树
1、重建二叉树 来源:牛客网输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。2、思路:先序第一个元素a为根节点,在中序数组中,a左边的元素为左子树,右边为右子树。左右子树放到递归中处理即可3、代码:private原创 2017-09-24 01:38:55 · 292 阅读 · 0 评论 -
求1+2+3+...+n
1、求1+2+3+…+n 来源:牛客网求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。2、递归结束的使用&&来解决 3、代码: public int Sum_Solution(int n) { Boolean a = (n!=0)&&((n += Sum_Solution(n - 1))原创 2017-09-22 16:48:41 · 479 阅读 · 0 评论 -
二叉树的深度
1、题目描述(来自牛客,leetcode也有一样的题目Leetcode-104. Maximum Depth of Binary Tree): 输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。2、思路:动态规划的思想:记子树i的层数为f(i),i 的左右子树分别为left、right则 f(i) = 1+max{f(left原创 2017-09-21 16:31:05 · 282 阅读 · 0 评论 -
path-sum
1、链接: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 example: Given the below bi原创 2017-10-14 14:03:47 · 224 阅读 · 0 评论 -
sum-root-to-leaf-numbers
1、题目:sum-root-to-leaf-numbers 来源:牛客网 Given a binary tree containing digits from0-9only, each root-to-leaf path could represent a number. An example is the root-to-leaf path1->2->3which represents the n原创 2017-10-20 22:26:07 · 236 阅读 · 0 评论 -
最近点对算法
1、算法: 1) 总体的思路: A、首先根据快排算法将数组按照x轴对数组a进行排序; B、总体采用递归的表现形式,处理方法为conquerPair,当点的数目为1时返回无穷大,为2时,直接返回两点的距离; C、对start到mid范围的点使用conquerPair方法得到l_min, 对mid+1到end范围的点使用conquerPair方法得到r_min原创 2016-10-12 00:20:04 · 1221 阅读 · 0 评论 -
leetcode-226. Invert Binary Tree c++ java
1、来源:226. Invert Binary Tree 2、题目: Invert a binary tree. 4 / \ 2 7 / \ / \ 1 3 6 9 to 4 / \ 7 2 / \ / \ 9 6 3 1 Trivia: This problem was inspir原创 2016-07-05 01:17:13 · 477 阅读 · 0 评论 -
二叉搜索树的后序遍历序列
1、二叉搜索树的后序遍历序列 来源:牛客网 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。2、思路:后续遍历中,最后一个元素为根节点,小于根节点的元素在左子树,大于根节点的在右子树。3、代码:public boolean VerifySquenceOfBST(int [] sequence) {原创 2017-09-24 16:34:42 · 267 阅读 · 0 评论