随笔分类 - 二叉树、递归
摘要:题目: 在经典汉诺塔问题中,有 3 根柱子及 N 个不同大小的穿孔圆盘,盘子可以滑入任意一根柱子。一开始,所有盘子自上而下按升序依次套在第一根柱子上(即每一个盘子只能放在更大的盘子上面)。移动圆盘时受到以下限制:(1) 每次只能移动一个盘子;(2) 盘子只能从柱子顶端滑出移到下一根柱子;(3) 盘子
        阅读全文
                
摘要:题目: 设计一个算法,找出二叉搜索树中指定节点的“下一个”节点(也即中序后继)。 如果指定节点没有对应的“下一个”节点,则返回null。 示例 1: 输入: root = [2,1,3], p = 1 2 / \1 3 输出: 2示例 2: 输入: root = [5,3,6,2,4,null,nu
        阅读全文
                
摘要:二叉树的前序递归、中序递归、后序递归不说了,是人都会写。 前序非递归: 前序是中-》左-》右,那么对于当前节点cur来说,我们要先把cur的值放入结果数组。再深入其左子树。左子树遍历完后,再深入其右子树。 那么显然再我们深入其左子树前,需要保存当前节点cur,因为之后还要遍历cur的右子树。 /**
        阅读全文
                
摘要:题目: 给定一个整数 n,计算所有小于等于 n 的非负整数中数字 1 出现的个数。 示例: 输入: 13输出: 6 解释: 数字 1 出现在以下数字中: 1, 10, 11, 12, 13 。 解答: 递归解决。分为首位为1和首位不为1两种情况: 1.首位为1,如12345。 先考虑大于等于1000
        阅读全文
                
摘要:题目: 给定一个整数数组,判断数组中是否有两个不同的索引 i 和 j,使得 nums [i] 和 nums [j] 的差的绝对值最大为 t,并且 i 和 j 之间的差的绝对值最大为 ķ。 示例 1: 输入: nums = [1,2,3,1], k = 3, t = 0输出: true示例 2: 输入
        阅读全文
                
摘要:Q: 实现一个二叉搜索树迭代器。你将使用二叉搜索树的根节点初始化迭代器。 调用 next() 将返回二叉搜索树中的下一个最小的数。 示例: BSTIterator iterator = new BSTIterator(root); iterator.next(); // 返回 3 iterator.
        阅读全文
                
摘要:一开始写的: # # @lc app=leetcode.cn id=114 lang=python3 # # [114] 二叉树展开为链表 # # Definition for a binary tree node. # class TreeNode: # def __init__(self, x)
        阅读全文
                
摘要:105. 从前序与中序遍历序列构造二叉树 2020/2/17: C++: 1 /** 2 * Definition for a binary tree node. 3 * struct TreeNode { 4 * int val; 5 * TreeNode *left; 6 * TreeNode 
        阅读全文
                
摘要:两种方法: 1.递归,每个节点递归时都会有一个上下界,越往下遍历节点的上下界会越来越收紧,若有不在上下界内的就返回False,最初对根节点的上下界没有,那就默认为负无穷到正无穷。 Definition for a binary tree node. # class TreeNode: # def _
        阅读全文
                

浙公网安备 33010602011771号