题目: 将有序数组转换为二叉搜索树:将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。 思路: 因为输入是递增的数组,为了转换成二叉搜索树,因此需要找到整个树的根节点,之后使用递归来的得到每个子树 ...
分类:
编程语言 时间:
2020-05-19 10:54:56
阅读次数:
56
递归定义 递归的一个简单定义:当函数直接或者间接调用自己时,则发生了递归。 递归的基本思想就是“自己调用自己”,一个使用递归技术的方法会直接或间接的调用自己递归构造包括两个部分: 定义递归头。什么时候不调用自身方法,如果没有头,将陷入死循环递归体。什么时候需要调用自身方法。 其实递归算法很简单,简单 ...
分类:
编程语言 时间:
2020-05-15 00:30:42
阅读次数:
60
题目描述 大家都知道斐波那契(Fibonacci)数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0,第1项是1)。 要求使用递归和非递归两种方法 1.递归 时间复杂度:O(2n) public class Solution { public int Fibonacci ...
分类:
其他好文 时间:
2020-05-13 23:34:59
阅读次数:
76
1 package com.yhqtv.java1; 2 3 import java.io.File; 4 5 /* 6 * 使用递归打印指定目录下所有文件名(包括所有子目录下的) 7 * @author XMKJ yhqtv.com Email:yhqtv@qq.com 8 * @create 2 ...
分类:
其他好文 时间:
2020-05-12 14:14:56
阅读次数:
54
1. 使用递归函数的优点是逻辑简单清晰,缺点是过深的调用会导致栈溢出。2. Python标准的解释器没有针对尾递归做优化,任何递归函数都存在栈溢出的问题。 ...
分类:
编程语言 时间:
2020-05-11 21:46:29
阅读次数:
66
题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。 思路:使用递归的思想。 1 前序遍历的第一个数字pr ...
分类:
其他好文 时间:
2020-05-09 21:35:55
阅读次数:
50
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。 使用递归时间复杂度降为o(logn)n为指数大小 对cyc大佬的补充,考虑了base为零的情况,否则当base==0,exp为复数是会出错 public class Solution { ...
分类:
其他好文 时间:
2020-05-09 19:24:25
阅读次数:
70
题目: 解法: 方法:递归 算法: 从问题的描述中,可以清楚地了解到,我们需要在给定树的每个结点处找到其坡度,并将所有的坡度相加以获得最终结果。要找出任意结点的坡度,我们需要求出该结点的左子树上所有结点和以及其右子树上全部结点和的差值。 因此,为了找出解决方案,我们使用递归函数 traverse,在 ...
分类:
其他好文 时间:
2020-05-03 14:53:40
阅读次数:
61
题目: 反转链表:反转一个单链表。 进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题? 思路: 思路一:使用栈的思想。 思路二:使用迭代。 思路三:使用递归。 程序1: # Definition for singly-linked list. # class ListNode: # de ...
分类:
编程语言 时间:
2020-05-01 17:01:32
阅读次数:
66
算法 第八章 Morris遍历/搜索二叉树/跳表等(完结) Morris遍历 + Morris遍历实现二叉树的先中后序遍历,时间复杂度O(n), 额外空间复杂度O(1) + 如果使用递归/非递归版本都是使用栈来完成二叉树遍历,因为只有指向子指针没有指向父指针,有额外的栈空间。 + Morris遍历实 ...
分类:
编程语言 时间:
2020-04-21 18:52:39
阅读次数:
92