摘要:
如果二叉树每个节点都具有相同的值,那么该二叉树就是单值二叉树。 只有给定的树是单值二叉树时,才返回 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: 思路:前序遍历一颗二叉树,即根→左→右,那么很明显会沿着根顺着左孩子而下,直到到 阅读全文
摘要:
穿插一下牛客的《剑指Offer》的题,也算是换换口味吧。感兴趣的童鞋也可以来试试呀:https://www.nowcoder.com/ta/coding-interviews?page=1 题目描述 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。 思路:最简单的想法,利用栈的特性就 阅读全文
摘要:
将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。 示例: 给定有序数组: [-10,-3,0,5,9], 一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉 阅读全文
摘要:
给定一个 N 叉树,找到其最大深度。 最大深度是指从根节点到最远叶子节点的最长路径上的节点总数。 例如,给定一个 3叉树 : 我们应返回其最大深度,3。 说明: 树的深度不会超过 1000。树的节点总不会超过 5000。 soultion1: 思考:层次遍历解法,稍微变化的点时记录当前层节点数目k, 阅读全文