递归
BIG_GENERAL_DD
好好学习,天天向上.
展开
-
按之字形打印二叉树 (Java实现)
请实现一个函数按照之字形打印二叉树。即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。思路:是直接基于 多行打印二叉树的题解, 在对偶数行进行逆序,即可满足条件。但是奇怪的是,如下的代码,总是报错:// import java.util.ArrayList;// /*// public class TreeNode {// int val = 0;// TreeNode left =...原创 2021-03-29 14:49:19 · 431 阅读 · 0 评论 -
将二叉树打印成多行 (Java实现)
从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。典型的层序遍历import java.util.*;public class Solution { public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) { ArrayList<Integer> list = new ArrayList<Integer>(); if(root..转载 2021-03-29 14:02:57 · 190 阅读 · 0 评论 -
二叉树的下一个节点
给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。https://blog.nowcoder.net/n/37b2e6170ffb4acaa27f67f88b1b1922?f=comment时间复杂度:O(n)O(n)空间复杂度:O(n)O(n)/*public class TreeLinkNode { int val; TreeLinkNode left = null; .转载 2021-03-29 12:39:49 · 124 阅读 · 0 评论 -
平衡二叉树 (Java实现)
输入一棵二叉树,判断该二叉树是否是平衡二叉树。在这里,我们只需要考虑其平衡性,不需要考虑其是不是排序二叉树平衡二叉树(Balanced Binary Tree),具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。https://blog.nowcoder.net/n/7148665d45924433a272c7b99ca79311?f=comment平衡二叉树的定义是左右子树高度差不超过1,同时左右子树也是平衡二叉树,于是代..转载 2021-03-29 12:15:43 · 198 阅读 · 0 评论 -
序列化/反序列化二叉树 (Java实现)
请实现两个函数,分别用来序列化和反序列化二叉树二叉树的序列化是指:把一棵二叉树按照某种遍历方式的结果以某种格式保存为字符串,从而使得内存中建立起来的二叉树可以持久保存。序列化可以基于先序、中序、后序、层序的二叉树遍历方式来进行修改,序列化的结果是一个字符串,序列化时通过 某种符号表示空节点(#),以 ! 表示一个结点值的结束(value!)。二叉树的反序列化是指:根据某种遍历顺序得到的序列化字符串结果str,重构二叉树。例如,我们可以把一个只有根节点为1的二叉树序列化为"1,",然后通过自己.原创 2021-03-29 11:47:56 · 262 阅读 · 0 评论 -
二叉搜索树的第K个节点 (Java实现)
给定一棵二叉搜索树,请找出其中的第k小的TreeNode结点。思路: //利用二叉搜索树的特性, 左子树的节点比根节点值小,右子树的节点比根节点值大 // 对二叉搜索树进行前序遍历, 就是一个升序的 数据结构 // 可以将二叉搜索树的节点存在一个列表结构中, 从而将题目转换为求解 下标为第k-1个的节点/*public class TreeNode { int val = 0; TreeNode left = null; ...原创 2021-03-28 23:00:01 · 197 阅读 · 0 评论 -
对称二叉树(Java实现)
请实现一个函数,用来判断一棵二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。思路: 新建一个镜像二叉树,然后再来比较两个二叉树是否相同。 难点,另外构建2个辅助函数,2个辅助函数中分别递归。/*public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { .原创 2021-03-28 18:24:50 · 350 阅读 · 0 评论 -
二叉树的深度 (Java实现)
输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。递归解法:/**public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; }}*///递归左右子树,比较左右侧的.原创 2021-03-28 17:33:38 · 159 阅读 · 0 评论 -
爬楼梯
有一段楼梯台阶共有15级,小明一步最多只能跨3级,请问小明登上这段台阶有多少种不同走法?#include#includeusing namespace std;int f(int n) { int a=0; if(n==1) return 1; if(n==2) return 2; if(n==3) return 4; return a=f(n-1)+f(n-2)+f(n-3)原创 2017-07-24 19:59:21 · 312 阅读 · 0 评论 -
n!后面有多少个0
一开始想的简单,直接写代码:#include#includeusing namespace std;int f(int n) { if(n==0 || n==1) return 1; return n*f(n-1);}int main() { int n,b,a=0; cin>>n; b=f(n); while(b!=0) { if(b%10==0) { a++原创 2017-07-24 19:31:48 · 656 阅读 · 0 评论 -
奇怪的比赛
某电视台举办了低碳生活大奖赛。题目的计分规则相当奇怪:每位选手需要回答10个问题(其编号为1到10),越后面越有难度。答对的,当前分数翻倍;答错了则扣掉与题号相同的分数(选手必须回答问题,不回答按错误处理)。 每位选手都有一个起步的分数为10分。 某获胜选手最终得分刚好是100分,如果不让你看比赛过程,你能推断出他(她)哪个题目答对了,哪个题目答错了吗? 如果把答原创 2017-03-30 20:12:40 · 427 阅读 · 0 评论 -
39级台阶
小明刚刚看完电影《第39级台阶》,离开电影院的时候,他数了数礼堂前的台阶数,恰好是39级!站在台阶前,他突然又想着一个问题:如果我每一步只能迈上1个或2个台阶。先迈左脚,然后左右交替,最后一步是迈右脚,也就是说一共要走偶数步。那么,上完39级台阶,有多少种不同的上法呢?请你利用计算机的优势,帮助小明寻找答案。要求提交的是一个整数。#include int cnt=原创 2017-03-30 19:51:45 · 391 阅读 · 0 评论 -
李白打酒
话说大诗人李白,一生好饮。幸好他从不开车。一天,他提着酒壶,从家里出来,酒壶中有酒2斗。他边走边唱: 无事街上走,提壶去打酒。 逢店加一倍,遇花喝一斗。这一路上,他一共遇到店5次,遇到花10次,已知最后一次遇到的是花,他正好把酒喝光了。 请你计算李白遇到店和花的次序,可以把遇店记为a,遇花记为b。则:babaabbabbabbbb 就是合理的次序。像转载 2017-03-30 19:49:46 · 229 阅读 · 0 评论 -
递归-整数划分(1)
首先是递归解法整数划分问题是将一个正整数n拆成一组数连加并等于n的形式,且这组数中的最大加数不大于n。 如6的整数划分为 6 5 + 1 4 + 2, 4 + 1 + 1 3 + 3, 3 + 2 + 1, 3 + 1 + 1 + 1 2 + 2 + 2, 2 + 2 + 1 + 1, 2 + 1 + 1 + 1转载 2017-03-11 09:01:19 · 318 阅读 · 0 评论