剑指offer55题

输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。

package com.algorithm05;

import com.tools.TreeBinaryFunction;
import com.tools.TreeNode;

public class Algorithm55 {

	public static int TreeDepth(TreeNode root) {

		if(root==null)
			return 0;
		int left,right;
		left = TreeDepth(root.left);
		right = TreeDepth(root.right);

		return (left>right)?(left+1):(right+1);
    }
	public static void main(String[] args) {
		TreeNode treeNode = new TreeNode(0);
		TreeBinaryFunction.CreateTreeBinary(treeNode);
		System.err.println(TreeDepth(treeNode));
	}
}

  

时间: 2024-11-09 04:38:42

剑指offer55题的相关文章

剑指offer30题

定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数. 看到这个 题目,第一想法就是,我要不定义一个变量,指向当前栈中最小的值,每次入栈,就和最小值进行比较,如果比最小值小,则最小值指向该值,否则最小值依旧. 但很快遇到问题,如果在出栈时,最小值出来后,比最小值小的值呢?无法查到了啊! 于是思路出来了,用一个辅助栈,第一次将入栈的值放入,接下来每一次,和栈顶的值进行比较,如果比它小,则将该值放入,否则把栈顶的值再次放入. 此题参考剑指offer书的思路. 下面附代码. packa

剑指Offer--第16题 数值的整数次方

第16题 数值的整数次方 题目:给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方. 思路 看到有点懵,第一感觉觉得是不是应该考虑0的0次或者负数情况,还有就是浮点类型没办法使用"="号,最后自己以偷懒的方式直接调用Java的API,如果面试题中不让调用库函数,那么基本上这题就是挂了可能. 以上题目描述来自牛客,没有对使用做限制.真正的剑指offer上有限制条件不得使用库函数,同时不需要考虑大数问题. 自己的low代码 publ

剑指offer31题

题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列.(注意:这两个序列的长度是相等的) 模拟一个入栈操作,每次匹配即可.不想解释太多.直接看代码吧 package com.algorithm04; import java.util.Stack; public class Alg

剑指offer47题

题目:在一个mXn的棋盘的每一格放有一个礼物,每个礼物都有一定的价值(价值大于0).你可以从棋盘的左上角开始拿格子里的礼物,并每次向左或者向下移动一格,直到到达棋盘的右下角.给定一个棋盘及其上面的礼物,请计算你最多能拿到多少价值的礼物? 1 10  3 8 12   2  9 6 5 7  4  11 3 7  16 5 可以看到,价值最大的就是,1->12->5->7->7->16->5.即标下划线的数字. 那么现在,最好的方法就是动态规划了.这就是一道非常简单的动态

剑指offer42题(2)

在网上查了另外一种方法,其实也算同一种.有一些动态规划的思想.代码如下: package com.algorithm04; public class Algorithm42_2 { public int maxSumInSubArray(int[] array){ if(array.length<0) return 0; if(array.length==1) return array[0]; int max,begin,end,len; int[] c = new int[100]; begi

剑指offer28题

题目描述 操作给定的二叉树,将其变换为源二叉树的镜像. 输入描述: 二叉树的镜像定义:源二叉树 8 / 6 10 / \ / 5 7 9 11 镜像二叉树 8 / 10 6 / \ / 11 9 7 5废话不多说,直接强行上代码.树的创建和打印已经封装好,直接调用. package com.algorithm04; import com.tools.TreeBinaryFunction; import com.tools.TreeNode; public class Algorithm27 {

剑指offer42题

HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学.今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决.但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止).你会不会被他忽悠住?(子向量的长度至少是1) package com.algorithm05; public class Algorithm42

剑指offer55 字符流中第一个不重复的字符(最典型错误)

典型并且基础的错误: class Solution { public: //Insert one char from stringstream void Insert(char ch) { if(result[ch] == -1) result[ch] = index; else if(result[ch] >= 0) result[ch] = -2; index++; } //return the first appearence once char in current stringstre

剑指offer-第12题方法总结

<span style="font-family:SimSun;"></span><pre name="code" class="cpp"> 题目:输入数字n,按顺序打印从1位到最大n位的十进制整数 .例如:输入3,则从1打印到999. 乍一看,这个问题很简单啊!!! void output(int n) { int i = 0; for (i = 1; i < pow(10, n ); i++) { p