08 2019 档案
摘要:给定一个树,按中序遍历重新排列树,使树中最左边的结点现在是树的根,并且每个结点没有左子结点,只有一个右子结点。 示例 : 提示: 给定树中的结点数介于 1 和 100 之间。每个结点都有一个从 0 到 1000 范围内的唯一整数值。 solution: 思路:最水的方法,中序+重新构树。
阅读全文
摘要:给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。” 例如,给定如下二叉搜索树: root = [6,
阅读全文
摘要:给定一个非空二叉树, 返回一个由每层节点平均值组成的数组. 示例 1: 输入: 3 / \ 9 20 / \ 15 7输出: [3, 14.5, 11]解释:第0层的平均值是 3, 第1层是 14.5, 第2层是 11. 因此返回 [3, 14.5, 11].注意: 节点值的范围在32位有符号整数范
阅读全文
摘要:给定一个二叉搜索树,同时给定最小边界L 和最大边界 R。通过修剪二叉搜索树,使得所有节点的值在[L, R]中 (R>=L) 。你可能需要改变树的根节点,所以结果应当返回修剪好的二叉搜索树的新的根节点。 solution: 1 /** 2 * Definition for a binary tree
阅读全文
摘要:给定一个 N 叉树,返回其节点值的层序遍历。 (即从左到右,逐层遍历)。 例如,给定一个 3叉树 : 返回其层序遍历: [ [1], [3,2,4], [5,6]] 说明: 树的深度不会超过 1000。树的节点总数不会超过 5000。 solution:
阅读全文
摘要:给定两个二叉树,编写一个函数来检验它们是否相同。 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。 solution: 思路:对于当前节点而言,如果两棵树都为空,则返回true;如有一颗为空,返回false;如果二者都不为空,且两者值不等,则为false;如果以上都不满足,则说明当
阅读全文
摘要:如果二叉树每个节点都具有相同的值,那么该二叉树就是单值二叉树。 只有给定的树是单值二叉树时,才返回 true;否则返回 false。 示例 1: 输入:[1,1,1,1,1,null,1]输出:true示例 2: 输入:[2,2,2,5,2]输出:false 提示: 给定树的节点数范围是 [1, 1
阅读全文
摘要:时间限制:1秒 空间限制:32768K 热度指数:452462 题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。 思路:跳上第n阶之前一个只有两种可能,要么在第n-1,要么在n-2上,因此f(n)=f(n-1)+f(n-
阅读全文
摘要:时间限制:1秒 空间限制:32768K 题目描述 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。 n<=39 思路:递归,然后出(bu)人(chu)意料的超时了,那就直接记录下当之前的每一项,直接递推到第n项。 solution1: 1 cla
阅读全文
摘要:题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。 思路:栈1中存储元素的顺序为逆序,导入到栈2中元素顺序即为顺序。 1 class Solution 2 { 3 public: 4 void push(int node) { 5 while(!stack
阅读全文
摘要:我们通常所说的排序算法往往指的是内部排序算法,即数据记录在内存中进行排序。 排序算法大体可分为两种: 一种是比较排序,时间复杂度O(nlogn) ~ O(n^2),主要有:冒泡排序,选择排序,插入排序,归并排序,堆排序,快速排序等。 另一种是非比较排序,时间复杂度可以达到O(n),主要有:计数排序,
阅读全文
摘要:题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。 solution: 1 /** 2 * Defini
阅读全文
摘要:给定一个二叉树,返回它的 前序 遍历。 示例: 输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,2,3]进阶: 递归算法很简单,你可以通过迭代算法完成吗? solution1: solution2: 思路:前序遍历一颗二叉树,即根→左→右,那么很明显会沿着根顺着左孩子而下,直到到
阅读全文