深入探索spring技术内幕(二): 剖析spring管理Bean的原理与配置

求二叉树的宽度和深度

给定一个二叉树,获取该二叉树的宽度和深度。

例如输入

a

/ \

b c

/ \ / \

d e f g

返回3.

详细描述:

接口说明

原型:

int GetBiNodeInfo(BiNode &head, unsigned int *pulWidth, unsigned int *pulHeight)

输入参数:

head 需要获取深度的二叉树头结点

输出参数(指针指向的内存区域保证有效):

pulWidth 宽度

pulHeight 高度

返回值:

0 成功

1 失败或其他异常

int DEEP;//深度,初始节点深度为0.则计算完了,将deep加一
int level[10010];//假定最高10010层。太大了就无法保存了。

//深度优先遍历
void DFS(int d,BiNode *n){//d为所要遍历的节点的层数
	if(n != 0){
		if(d > DEEP)
			DEEP = d;
		level[d] ++;
		DFS(d+1,n->left);
		DFS(d+1,n->right);
	}
}
/*
Description
         给定一个二叉树,获取该二叉树的宽度深度。
Prototype
         int GetBiNodeInfo(BiNode &head, unsigned int *pulWidth, unsigned int *pulHeight)
Input Param
         head   需要获取深度的二叉树头结点
Output Param
         pulWidth   宽度
         pulHeight  高度
Return Value
         0          成功
         1          失败或其他异常
*/
int GetBiNodeInfo(BiNode &head, unsigned int *pulWidth, unsigned int *pulHeight)
{
	/*在这里实现功能*/

	for(int i = 0; i < 10010;i++)
		level[i] = 0;
	DEEP = 0;
	DFS(0,&head);
	DEEP++;
	*pulHeight = DEEP;
	DEEP = 0;
	for(int i =0; i < 10010;i++)
		DEEP = level[i] > DEEP ? level[i] : DEEP;
	*pulWidth = DEEP;
	return 0;
}

深入探索spring技术内幕(二): 剖析spring管理Bean的原理与配置,布布扣,bubuko.com

时间: 2024-12-26 17:14:31

深入探索spring技术内幕(二): 剖析spring管理Bean的原理与配置的相关文章

深入探索spring技术内幕(四): 剖析@Resource注解实现原理与注解注入

一.@Resource注解原理 @Resource可以标注在字段或属性的setter方法上 1.  如果指定了name属性, 那么就按name属性的名称装配; 2. 如果没有指定name属性, 那就按照默认的名称查找依赖对象; 3. 如果按默认名称查找不到依赖对象, 那么@Resource注解就会回退到按类型装配; ① 先写一个自己的@MyResource: import java.lang.annotation.Retention; import java.lang.annotation.Re

《Spring技术内幕》笔记-Spring的设计理念和整体架构

1,Spring的主要子项目: -1,Spring Framework(Core):Spring项目的核心.提供IoC,AOP,MVC等核心功能. -2,Spring Web Flow:工作流引擎. -3,Spring BlazeDs Integration:Spring提供的与Flex通讯模块. -4,Spring Security:Spring认证和安全框架. -5,Spring Security OAuth:OAuth在Spring的实现上提供支持. -6,Spring Dynamic M

《Spring技术内幕》笔记-Spring的设计理念和总体架构

1.Spring的主要子项目: ????-1.Spring Framework(Core):Spring项目的核心.提供IoC,AOP,MVC等核心功能. ????-2.Spring Web Flow:工作流引擎. ????-3.Spring BlazeDs Integration:Spring提供的与Flex通讯模块. ????-4,Spring Security:Spring认证和安全框架. ????-5,Spring Security OAuth:OAuth在Spring的实现上提供支持.

深入探索spring技术内幕(一): spring概述

一.Spring是什么? Spring是一个开源的控制反转 ( IoC ) 和面向切面 ( AOP ) 的容器框架, 它的主要目的是简化企业开发. 二.控制反转(IoC) 控制反转: 所谓的控制反转就是应用本身不负责依赖对象的创建及维护, 依赖对象的创建及维护是由外部容器负责的. 这样控制权就由应用转移到了外部容器, 控制权的转移就是所谓的反转. public class PersonServiceBean { // 自己new一个对象 private PersonDao personDao =

深入探索spring技术内幕(八): Spring +JDBC组合开发和事务控制

一. 配置数据源 <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="org.gjt.mm.mysql.Driver"/> <property name="

深入探索spring技术内幕(七): 配置Spring AOP面向切面编程

一. AOP一些概念 Aspect( 切面 ): 指横切性关注点的抽象即为切面, 它与类相似, 只是两者的关注点不一样, 类是对物体特征的抽象, 而切面横切性关注点的抽象. joinpoint( 连接点 ): 指那些被拦截到的点. 在spring中, 这些点指的是方法, 因为spring只支持方法类型的连接点, 实际上joinpoint还可以是field或类构造器) Pointcut( 切入点 ): 指我们要对那些joinpoint进行拦截的定义. Advice( 通知 ): 指拦截到joinp

深入探索spring技术内幕(六): JDK动态代理和cglib生成代理

[ JDK生成代理 ] JDK中给我们提供了一个Proxy类可以动态的给我们生成代理. 假定我们要做一个权限管理系统, 需要控制用户对某一个方法的访问. 如果user为null, 那么不让用户访问save方法. ① 接口类: PersonService public interface PersonService { public void save(); } ② 实现类: PersonServiceImpl public class PersonServiceImpl implements P

Spring技术内幕:设计理念和整体架构概述

程序员都很崇拜技术大神,很大一部分是因为他们发现和解决问题的能力,特别是线上出现紧急问题时,总是能够快速定位和解决. 一方面,他们有深厚的技术基础,对应用的技术知其所以然,另一方面,在采坑的过程中不断总结,积累了很多经验. 相信大家都使用过Spring,有些人了解它的核心:IOC和AOP,但只是了解它们的基本概念.使用了反射和动态代理,关于如何管理对象.代理的具体实现了解的比较浅. 有些人使用Spring MVC,使用Spring集成数据库.事务.消息队列以简化操作,但对集成的具体设计思路和实现

SPRING技术内幕,Spring源码深度解析

 SPRING技术内幕,Spring源码深度解析 SPRING技术内幕:深入解析SPRING架构与设计原理(第2版)[带书签].pdf: http://www.t00y.com/file/78131650 Spring源码深度解析 [郝佳编著] sample.pdf: http://www.t00y.com/file/78131634 [jingshuishenliu.400gb.com]Spring Data.pdf: http://www.t00y.com/file/78256084 [