
编程
月璇之音
志存高远,脚踏实地
展开
-
二叉树的递归遍历和非递归遍历
二叉树的递归遍历和非递归遍历前续遍历中序遍历后续遍历前续遍历非递归先序遍历的思路如下:1.先将根节点入栈2.访问根节点3.如果根节点存在右孩子,则将右孩子入栈4.如果根节点存在左孩子,则将左孩子入栈(注意:一定是右孩子先入栈,然后左孩子入栈)5.重复2-4--非递归public void preOrder(TreeNode root){ Stack<TreeNode> stack = new LinkedList(); stack.push(root); TreeNod原创 2020-07-23 22:31:43 · 244 阅读 · 0 评论 -
二叉树的深度以及判断平衡二叉树
输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度--一个根节点的左右有几个子节点,而该树的深度就是求左右子节点的最大一个+1public int TreeDepath(TreeNode pRoot){ if(pRoot==null) return 0;原创 2016-05-23 23:14:15 · 1985 阅读 · 0 评论 -
剑指offer第二天
给定一个数组A[0,1,…,n-1],请构建一个数组B[0,1,…,n-1],其中B中的元素B[i]=A[0]A[1]…A[i-1]*A[i+1]…*A[n-1]。不能使用除法。分析B[i]=A[0]A[1]…A[i-1]*A[i+1]…*A[n-1]得: 从左到右算 B[i]=A[0]A[1]…*A[i-1] 从右到左算B[i]=A[i+1]…*A[n-1] public in原创 2016-05-25 23:06:58 · 552 阅读 · 0 评论 -
青蛙跳阶有关的斐波拉契数列
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。每次看到这种题目,首先想到的是是否有什么规律:每次跳阶有两种选择(n>2),一次跳一阶,那么剩下n-1个台阶,还有f(n-1)跳法,一次跳两阶,那么剩下n-2个台阶,还有f(n-2)跳法。那么当n=1时,f(1)=1;n=2,f(2)=2;n=3,f(3)=3;n=4;f(4)=6……. 发现是一个斐波那契数原创 2016-05-26 23:12:30 · 826 阅读 · 0 评论 -
用两个栈实现队列与二叉树的镜像
题目描述用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。思路:队列:是先进先出;栈:是先进后出。由此可见,用两个栈可以实现队列。首先队列push的时候,就只需要把元素放进栈1,这里需要注意的是int与integer的转换,即new Integer(int) 。队列pop的时候,就是把栈1里面的元素放到栈2中,然后将栈2中的元素pop就可以实现了。这里又涉及到将In原创 2016-05-28 22:54:46 · 788 阅读 · 0 评论 -
确定两串乱序同构
题目描述给定两个字符串,请编写程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。这里规定大小写为不同字符,且考虑字符串重点空格。给定一个string stringA和一个string stringB,请返回一个bool,代表两串是否重新排列后可相同。保证两串的长度都小于等于5000。测试样例: “This is nowcoder”,”is This nowcoder” 返回:tru原创 2016-04-24 22:25:54 · 482 阅读 · 0 评论 -
几种排序的总结
冒泡法排序比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。 针对所有的元素重复以上的步骤,除了最后一个. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。 * @param numbers * 需要排序的整型数组 */ public static原创 2016-07-27 14:39:29 · 430 阅读 · 0 评论 -
腾讯校招模拟面试题之蛇形打印
当输入一个数字N时,构造一个N*N的蛇形矩阵,即矩阵的数字1—N^2从外而内依次顺时针打印 当n=3时矩阵为 1 2 3 8 9 4 7 6 5 当n=5时矩阵为 1 2 3 4 5 16 17 18 19 6 15 24 25 20 7 14 23 22 21 8 13 12 11 10 9当时候做题的时候想到是顺时针打印法,一直没有做出来,因为自己就是想不出从右到左和左下到左原创 2016-09-02 20:48:51 · 744 阅读 · 0 评论