- leetcode刷题day13|二叉树Part01(递归遍历、迭代遍历、统一迭代、层序遍历)
小冉在学习
leetcode算法职场和发展
递归遍历思路:使用递归的方式比较简单。1、递归函数的传参:因为最后输出一个数组,所以需要传入根节点和一个容器,本来想写数组,但发现长度不能确定,所以选择list。2、终止条件:当访问的节点为空时,return3、递归函数的逻辑:先访问一个节点,递归访问其他节点144.二叉树的前序遍历代码如下:classSolution{publicListpreorderTraversal(TreeNoderoo
- 六、二叉树(1)
小霖同学onism
算法基础python
六、二叉树(1)理论基础种类存储方式遍历方式定义144.二叉树的前序遍历递归法,后面见迭代145.二叉树的后序遍历,递归94.二叉树的中序遍历,递归定义特点和区别适用场景迭代遍历前序迭代中序迭代后序迭代中序遍历(InorderTraversal)后序遍历(PostorderTraversal)思路上的主要区别统一迭代(标记法)层序遍历理论基础种类满二叉树:节点都是满的,节点个数2^k-1完全二叉树
- 代码随想录算法训练营day18|二叉树06
咕咕鹄鹄
算法数据结构
一、530.二叉搜索树的最小绝对差530.二叉搜索树的最小绝对差-力扣(LeetCode)给你一棵所有节点为非负值的二叉搜索树,请你计算树中任意两节点的差的绝对值的最小值。示例:提示:树中至少有2个节点思路:classSolution:def__init__(self):self.vec=[]deftraversal(self,root):ifrootisNone:returnself.trave
- 浙大数据结构:03-树3 Tree Traversals Again
_Power_Y
数据结构浙大数据结构c++算法
这道题也不算难,我依然采用map来进行处理,代码依旧较短机翻1、条件准备我这里采用数组模拟栈,tt指向栈顶;map的键存结点值,后面数对存左右子树的结点值head存头节点的值#include#include#includeusingnamespacestd;intstk[100],tt=-1;map>m;inthead;主函数先是加快输入输出,然后输入结点数量,调用inordertraval生成这
- View绘制流程(三) - onLayout
世道无情
1.onLayoutmeasure完毕后,表示view大小已经测量好了,然后就是onLayout了,作用是确定view的位置;performTraversals__>perforLayouthost.layout__>view.onLayout__>viewgroup.onLayout2.源码分析privatevoidperformLayout(WindowManager.LayoutParams
- 二叉树的遍历(递归与非递归)
鸟剩鱼汤
二叉树的遍历(递归与非递归)非递归遍历前序遍历对于非递归的树遍历,通过一个stack进行原来递归的处理;前序遍历是左子树遍历的时候,进行入栈的操作进行val的res的入栈操作。当stack栈空的时候结束;前序遍历非递归(Leetcode144)vectorpreorderTraversal(TreeNode*root){stackstack;vectorres;TreeNode*p=root;wh
- 429. N-ary Tree Level Order Traversal. Python/Scala
电饭锅娃儿
环境:python3.6,scala2.11.8题意N叉树的层次遍历,题意比较清晰,具体可戳此。分析虽然是N叉树遍历,仍可参考二叉树的先序、中序及后序遍历。三种方法都使用递归和栈来完成二叉树的遍历,不同的是N叉树要求返回的结果为二维列表,反映节点间的层级关系。递归基于二叉树的通用递归写法,先来看看遍历N叉树的递归起手式:defdfs(node):ifnode:#符合某些条件后,添加至结果列表。类似
- 二叉树的非递归遍历(c++)
铁蛋Q
c++算法开发语言
前序.-力扣(LeetCode).-备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界IT名企DreamOffer。https://leetcode.cn/problems/binary-tree-preorder-traversal/description/1---2---4---5---3---6---7思想:中左右1.先访问左路结点2.左路结点入栈3.取栈中结点访问
- 算法day17|如何求普通二叉树的众数
桃酥403
算法数据结构c++leetcode哈希算法
算法day17|如何求普通二叉树的众数501的变式:普通二叉树的众数501的变式:普通二叉树的众数如果把二叉搜索树变成普通二叉树,我们该怎么思考呢?这个时候就要回到我一开始的思路了,用哈希表来解决问题。classSolution{public:unordered_mapmap;voidtraversal(TreeNode*root){if(root==nullptr)return;map[root
- 树的三种遍历方式
L.2626
数据结构java算法数据结构
树的三种常见遍历方式是前序遍历、中序遍历和后序遍历。以下是用Java实现二叉树这三种遍历方式的示例代码,并给出相应的解释:classTreeNode{intval;TreeNodeleft;TreeNoderight;TreeNode(intval){this.val=val;}}publicclassTreeTraversal{//前序遍历:先访问根节点,然后递归遍历左子树,最后递归遍历右子树p
- Java——使用stack实现二叉树的前中后序遍历
你知道烟火吗
javajava开发语言
importjava.util.ArrayList;importjava.util.List;importjava.util.Stack;publicclassTraversal{publicstaticclassTreeNode{intval;TreeNodeleft;TreeNoderight;TreeNode(){}TreeNode(intval){this.val=val;}TreeNod
- 代码随想录算法训练营Day20 || leetCode 530.二叉搜索树的最小绝对差 || 501.二叉搜索树中的众数 || 236. 二叉树的最近公共祖先
qq_44884699
算法leetcode职场和发展
530.二叉搜索树的最小绝对差最简单的思路为中序遍历,然后遍历数组求差值。classSolution{private:voidtraversal(TreeNode*root,vector&vec){if(root==NULL)return;traversal(root->left,vec);vec.push_back(root->val);//将二叉搜索树转换为有序数组traversal(root
- 210. 课程表 II(Java、DFS)
低调的骏马
算法深度优先java图论
比起207题有向图环的检测,多了一个要求是将后序遍历的结果反转,即得到拓扑排序的结果//记录后序遍历结果Listpostorder=newArrayList[]buildGraph(intnumCourses,int[][]prerequisites)DFS遍历voidtraverse(List[]graph,ints)反转结果Collections.reverse(postorder);clas
- leetcode--429--N叉树的层序遍历
minningl
题目:给定一个N叉树,返回其节点值的层序遍历。(即从左到右,逐层遍历)。例如,给定一个3叉树:image.png返回其层序遍历:[[1],[3,2,4],[5,6]]说明:树的深度不会超过1000。树的节点总数不会超过5000。链接:https://leetcode-cn.com/problems/n-ary-tree-level-order-traversal思路:1、采用BFS的思路,分层记录
- 算法题打卡day21 | 530.二叉搜索树的最小绝对差、501.二叉搜索树中的众数、236. 二叉树的最近公共祖先
寡悔
算法
530.二叉搜索树的最小绝对差-力扣(LeetCode)状态:想到了利用BST中序遍历的特性,但在实现时受到之前套路的影响。没有想到利用双指针的方法来进行逐个判断更新,代码如下:classSolution{public:intres=INT_MAX;TreeNode*pre=nullptr;voidtraversal(TreeNode*cur){if(cur==nullptr)return;tra
- 力扣145 二叉树的后序遍历 Java版本
远山凛凛
LeetCodeleetcodejava算法
文章目录题目描述递归解法代码非递归解法思路代码题目描述给你一棵二叉树的根节点root,返回其节点值的后序遍历。示例1:输入:root=[1,null,2,3]输出:[3,2,1]示例2:输入:root=[]输出:[]示例3:输入:root=[1]输出:[1]提示:树中节点的数目在范围[0,100]内-100postorderTraversal(TreeNoderoot){Listresult=ne
- 力扣热门100题——二叉树的中序遍历(递归,迭代,Morris 中序遍历)
humor2020
力扣刷题java力扣算法
7、二叉树的中序遍历1.问题描述给定一个二叉树的根节点root,返回它的中序遍历。2.示例示例1:输入:root=[1,null,2,3]输出:[1,3,2]示例2:输入:root=[]输出:[]示例3:输入:root=[1]输出:[1]3.提示树中节点数目在范围[0,100]内-100inorderTraversal(TreeNoderoot){Listres=newArrayListres){
- 力扣94 二叉树的中序遍历 (Java版本) 递归、非递归
远山凛凛
LeetCodeleetcodejava
文章目录题目描述递归解法非递归解法题目描述给定一个二叉树的根节点root,返回它的中序遍历。示例1:输入:root=[1,null,2,3]输出:[1,3,2]示例2:输入:root=[]输出:[]示例3:输入:root=[1]输出:[1]提示:树中节点数目在范围[0,100]内-100inorderTraversal(TreeNoderoot){Listresult=newArrayListre
- LeetCode | 0429. N 叉树的层序遍历【Python】
Wonz
ProblemLeetCodeGivenann-arytree,returnthelevelordertraversalofitsnodes'values.Nary-Treeinputserializationisrepresentedintheirlevelordertraversal,eachgroupofchildrenisseparatedbythenullvalue(Seeexample
- Leetcode With Golang 二叉树 part1
Kyookk
Golangleetcode算法数据结构
这一部分主要来梳理二叉树题目最简单最基础的部分,包括遍历,一些简单题目。一、Leecode144-二叉树的前序遍历https://leetcode.cn/problems/binary-tree-preorder-traversal/description/二叉树的遍历是入门。我们需要在程序一开始就创建一个空的数组,然后递归遍历左右节点,将节点放进这个数组内。下面直接给出代码:funcpreord
- python安装beautifulsoup库_《Python网络爬虫》3.1 BeautifulSoup库安装
weixin_39830225
BeautifulSoupparsesanythingyougiveit,anddoesthetreetraversalstuffforyou.BeautifulSoup也叫美味汤,他是一个非常优秀的python第三方库,它能够对html、xml格式进行解析,并且提取其中的相关信息。在BeautifulSoup的网站上有这样一番话,BeautifulSoup可以对你提供给他的任何格式进行相关的爬取
- 【Tree-easy】589. N-ary Tree Preorder Traversal 前序遍历N叉树
想当厨子的程序媛
刷题——Tree589.N-aryTreePreorderTraversal前序遍历N叉树
1.题目原址https://leetcode.com/problems/n-ary-tree-preorder-traversal/2.题目描述3.题目大意前序遍历一个N叉树4.解题思路通过递归的方式进行遍历5.AC代码classSolution{publicListpreorder(Noderoot){Listret=newArrayList();if(root==null)returnret;
- LeetCode每日一题590. N-ary Tree Postorder Traversal
叶卡捷琳堡
leetcode算法数据结构开发语言c++
文章目录一、题目二、题解一、题目Giventherootofann-arytree,returnthepostordertraversalofitsnodes’values.Nary-Treeinputserializationisrepresentedintheirlevelordertraversal.Eachgroupofchildrenisseparatedbythenullvalue(S
- [leetcode] 589. N-ary Tree Preorder Traversal
农民小飞侠
pythonleetcode题解
DescriptionGivenann-arytree,returnthepreordertraversalofitsnodes’values.Nary-Treeinputserializationisrepresentedintheirlevelordertraversal,eachgroupofchildrenisseparatedbythenullvalue(Seeexamples).Fol
- LeetCode-590. N-ary Tree Postorder Traversal
Burette_Lee
LeetCode-C++C/C++LeetCodeTreeN-Tree
Givenann-arytree,returnthepreordertraversalofitsnodes'values.Forexample,givena3-arytree:Returnitspreordertraversalas:[1,3,5,6,2,4].Note:Recursivesolutionistrivial,couldyoudoititeratively?题目:N叉树的后续遍历,先
- LeetCode题解:102. 二叉树的层序遍历,BFS,JavaScript,详细注释
Lee_Chen86
LeetCodeleetcode
原题链接:https://leetcode-cn.com/problems/binary-tree-level-order-traversal/解题思路:该题可以使用BFS,逐层遍历二叉树。使用队列进行遍历,队列中按顺序存储了每一层的节点。每次循环时,将队列中当前层的节点依次取出,即可在这次循环中,获取到当前层所有节点的值。同时,将当前层每个节点的子节点,依次存入队列尾部,等待下一次遍历处理。不断
- leetcode 589. N-ary Tree Preorder Traversal
bohu83
leetcode算法算法N叉树前序遍历leetcode589
一题目Givenann-arytree,returnthepreordertraversalofitsnodes'values.Nary-Treeinputserializationisrepresentedintheirlevelordertraversal,eachgroupofchildrenisseparatedbythenullvalue(Seeexamples).Followup:Re
- LeetCode每日一题589. N-ary Tree Preorder Traversal
叶卡捷琳堡
leetcode算法数据结构c++
文章目录一、题目二、题解一、题目Giventherootofann-arytree,returnthepreordertraversalofitsnodes’values.Nary-Treeinputserializationisrepresentedintheirlevelordertraversal.Eachgroupofchildrenisseparatedbythenullvalue(Se
- 二叉树的层次遍历
白日做梦0.0
java算法
classTreeNode{intvalue;TreeNodeleft;TreeNoderight;publicTreeNode(intvalue){this.value=value;this.left=null;this.right=null;}}publicclassBinaryTreeLevelOrderTraversal{publicList>levelOrderTraversal(Tre
- 代码随想录算法训练营Day21 | 530. 二叉搜索树的最小绝对差、501. 二叉搜索树中的众数、236. 二叉树的最近公共祖先
Y_Vollerei
算法
530.二叉搜索树的最小绝对差这题依旧利用二叉搜索树中序遍历是单调递增的性质,只要以中序遍历,对比其相邻节点差值即可。利用到了双指针技巧,使用一个pre指针记录上一个节点,cur代表当前节点。TreeNode*pre=nullptr;intminDiff=100001;voidtraversal(TreeNode*cur){if(!cur)return;traversal(cur->left);i
- html
周华华
html
js
1,数组的排列
var arr=[1,4,234,43,52,];
for(var x=0;x<arr.length;x++){
for(var y=x-1;y<arr.length;y++){
if(arr[x]<arr[y]){
&
- 【Struts2 四】Struts2拦截器
bit1129
struts2拦截器
Struts2框架是基于拦截器实现的,可以对某个Action进行拦截,然后某些逻辑处理,拦截器相当于AOP里面的环绕通知,即在Action方法的执行之前和之后根据需要添加相应的逻辑。事实上,即使struts.xml没有任何关于拦截器的配置,Struts2也会为我们添加一组默认的拦截器,最常见的是,请求参数自动绑定到Action对应的字段上。
Struts2中自定义拦截器的步骤是:
- make:cc 命令未找到解决方法
daizj
linux命令未知make cc
安装rz sz程序时,报下面错误:
[root@slave2 src]# make posix
cc -O -DPOSIX -DMD=2 rz.c -o rz
make: cc:命令未找到
make: *** [posix] 错误 127
系统:centos 6.6
环境:虚拟机
错误原因:系统未安装gcc,这个是由于在安
- Oracle之Job应用
周凡杨
oracle job
最近写服务,服务上线后,需要写一个定时执行的SQL脚本,清理并更新数据库表里的数据,应用到了Oracle 的 Job的相关知识。在此总结一下。
一:查看相关job信息
1、相关视图
dba_jobs
all_jobs
user_jobs
dba_jobs_running 包含正在运行
- 多线程机制
朱辉辉33
多线程
转至http://blog.csdn.net/lj70024/archive/2010/04/06/5455790.aspx
程序、进程和线程:
程序是一段静态的代码,它是应用程序执行的蓝本。进程是程序的一次动态执行过程,它对应了从代码加载、执行至执行完毕的一个完整过程,这个过程也是进程本身从产生、发展至消亡的过程。线程是比进程更小的单位,一个进程执行过程中可以产生多个线程,每个线程有自身的
- web报表工具FineReport使用中遇到的常见报错及解决办法(一)
老A不折腾
web报表finereportjava报表报表工具
FineReport使用中遇到的常见报错及解决办法(一)
这里写点抛砖引玉,希望大家能把自己整理的问题及解决方法晾出来,Mark一下,利人利己。
出现问题先搜一下文档上有没有,再看看度娘有没有,再看看论坛有没有。有报错要看日志。下面简单罗列下常见的问题,大多文档上都有提到的。
1、address pool is full:
含义:地址池满,连接数超过并发数上
- mysql rpm安装后没有my.cnf
林鹤霄
没有my.cnf
Linux下用rpm包安装的MySQL是不会安装/etc/my.cnf文件的,
至于为什么没有这个文件而MySQL却也能正常启动和作用,在这儿有两个说法,
第一种说法,my.cnf只是MySQL启动时的一个参数文件,可以没有它,这时MySQL会用内置的默认参数启动,
第二种说法,MySQL在启动时自动使用/usr/share/mysql目录下的my-medium.cnf文件,这种说法仅限于r
- Kindle Fire HDX root并安装谷歌服务框架之后仍无法登陆谷歌账号的问题
aigo
root
原文:http://kindlefireforkid.com/how-to-setup-a-google-account-on-amazon-fire-tablet/
Step 4: Run ADB command from your PC
On the PC, you need install Amazon Fire ADB driver and instal
- javascript 中var提升的典型实例
alxw4616
JavaScript
// 刚刚在书上看到的一个小问题,很有意思.大家一起思考下吧
myname = 'global';
var fn = function () {
console.log(myname); // undefined
var myname = 'local';
console.log(myname); // local
};
fn()
// 上述代码实际上等同于以下代码
m
- 定时器和获取时间的使用
百合不是茶
时间的转换定时器
定时器:定时创建任务在游戏设计的时候用的比较多
Timer();定时器
TImerTask();Timer的子类 由 Timer 安排为一次执行或重复执行的任务。
定时器类Timer在java.util包中。使用时,先实例化,然后使用实例的schedule(TimerTask task, long delay)方法,设定
- JDK1.5 Queue
bijian1013
javathreadjava多线程Queue
JDK1.5 Queue
LinkedList:
LinkedList不是同步的。如果多个线程同时访问列表,而其中至少一个线程从结构上修改了该列表,则它必须 保持外部同步。(结构修改指添加或删除一个或多个元素的任何操作;仅设置元素的值不是结构修改。)这一般通过对自然封装该列表的对象进行同步操作来完成。如果不存在这样的对象,则应该使用 Collections.synchronizedList 方
- http认证原理和https
bijian1013
httphttps
一.基础介绍
在URL前加https://前缀表明是用SSL加密的。 你的电脑与服务器之间收发的信息传输将更加安全。
Web服务器启用SSL需要获得一个服务器证书并将该证书与要使用SSL的服务器绑定。
http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后
- 【Java范型五】范型继承
bit1129
java
定义如下一个抽象的范型类,其中定义了两个范型参数,T1,T2
package com.tom.lang.generics;
public abstract class SuperGenerics<T1, T2> {
private T1 t1;
private T2 t2;
public abstract void doIt(T
- 【Nginx六】nginx.conf常用指令(Directive)
bit1129
Directive
1. worker_processes 8;
表示Nginx将启动8个工作者进程,通过ps -ef|grep nginx,会发现有8个Nginx Worker Process在运行
nobody 53879 118449 0 Apr22 ? 00:26:15 nginx: worker process
- lua 遍历Header头部
ronin47
lua header 遍历
local headers = ngx.req.get_headers()
ngx.say("headers begin", "<br/>")
ngx.say("Host : ", he
- java-32.通过交换a,b中的元素,使[序列a元素的和]与[序列b元素的和]之间的差最小(两数组的差最小)。
bylijinnan
java
import java.util.Arrays;
public class MinSumASumB {
/**
* Q32.有两个序列a,b,大小都为n,序列元素的值任意整数,无序.
*
* 要求:通过交换a,b中的元素,使[序列a元素的和]与[序列b元素的和]之间的差最小。
* 例如:
* int[] a = {100,99,98,1,2,3
- redis
开窍的石头
redis
在redis的redis.conf配置文件中找到# requirepass foobared
把它替换成requirepass 12356789 后边的12356789就是你的密码
打开redis客户端输入config get requirepass
返回
redis 127.0.0.1:6379> config get requirepass
1) "require
- [JAVA图像与图形]现有的GPU架构支持JAVA语言吗?
comsci
java语言
无论是opengl还是cuda,都是建立在C语言体系架构基础上的,在未来,图像图形处理业务快速发展,相关领域市场不断扩大的情况下,我们JAVA语言系统怎么从这么庞大,且还在不断扩大的市场上分到一块蛋糕,是值得每个JAVAER认真思考和行动的事情
- 安装ubuntu14.04登录后花屏了怎么办
cuiyadll
ubuntu
这个情况,一般属于显卡驱动问题。
可以先尝试安装显卡的官方闭源驱动。
按键盘三个键:CTRL + ALT + F1
进入终端,输入用户名和密码登录终端:
安装amd的显卡驱动
sudo
apt-get
install
fglrx
安装nvidia显卡驱动
sudo
ap
- SSL 与 数字证书 的基本概念和工作原理
darrenzhu
加密ssl证书密钥签名
SSL 与 数字证书 的基本概念和工作原理
http://www.linuxde.net/2012/03/8301.html
SSL握手协议的目的是或最终结果是让客户端和服务器拥有一个共同的密钥,握手协议本身是基于非对称加密机制的,之后就使用共同的密钥基于对称加密机制进行信息交换。
http://www.ibm.com/developerworks/cn/webspher
- Ubuntu设置ip的步骤
dcj3sjt126com
ubuntu
在单位的一台机器完全装了Ubuntu Server,但回家只能在XP上VM一个,装的时候网卡是DHCP的,用ifconfig查了一下ip是192.168.92.128,可以ping通。
转载不是错:
Ubuntu命令行修改网络配置方法
/etc/network/interfaces打开后里面可设置DHCP或手动设置静态ip。前面auto eth0,让网卡开机自动挂载.
1. 以D
- php包管理工具推荐
dcj3sjt126com
PHPComposer
http://www.phpcomposer.com/
Composer是 PHP 用来管理依赖(dependency)关系的工具。你可以在自己的项目中声明所依赖的外部工具库(libraries),Composer 会帮你安装这些依赖的库文件。
中文文档
入门指南
下载
安装包列表
Composer 中国镜像
- Gson使用四(TypeAdapter)
eksliang
jsongsonGson自定义转换器gsonTypeAdapter
转载请出自出处:http://eksliang.iteye.com/blog/2175595 一.概述
Gson的TypeAapter可以理解成自定义序列化和返序列化 二、应用场景举例
例如我们通常去注册时(那些外国网站),会让我们输入firstName,lastName,但是转到我们都
- JQM控件之Navbar和Tabs
gundumw100
htmlxmlcss
在JQM中使用导航栏Navbar是简单的。
只需要将data-role="navbar"赋给div即可:
<div data-role="navbar">
<ul>
<li><a href="#" class="ui-btn-active&qu
- 利用归并排序算法对大文件进行排序
iwindyforest
java归并排序大文件分治法Merge sort
归并排序算法介绍,请参照Wikipeida
zh.wikipedia.org/wiki/%E5%BD%92%E5%B9%B6%E6%8E%92%E5%BA%8F
基本思想:
大文件分割成行数相等的两个子文件,递归(归并排序)两个子文件,直到递归到分割成的子文件低于限制行数
低于限制行数的子文件直接排序
两个排序好的子文件归并到父文件
直到最后所有排序好的父文件归并到输入
- iOS UIWebView URL拦截
啸笑天
UIWebView
本文译者:candeladiao,原文:URL filtering for UIWebView on the iPhone说明:译者在做app开发时,因为页面的javascript文件比较大导致加载速度很慢,所以想把javascript文件打包在app里,当UIWebView需要加载该脚本时就从app本地读取,但UIWebView并不支持加载本地资源。最后从下文中找到了解决方法,第一次翻译,难免有
- 索引的碎片整理SQL语句
macroli
sql
SET NOCOUNT ON
DECLARE @tablename VARCHAR (128)
DECLARE @execstr VARCHAR (255)
DECLARE @objectid INT
DECLARE @indexid INT
DECLARE @frag DECIMAL
DECLARE @maxfrag DECIMAL
--设置最大允许的碎片数量,超过则对索引进行碎片
- Angularjs同步操作http请求with $promise
qiaolevip
每天进步一点点学习永无止境AngularJS纵观千象
// Define a factory
app.factory('profilePromise', ['$q', 'AccountService', function($q, AccountService) {
var deferred = $q.defer();
AccountService.getProfile().then(function(res) {
- hibernate联合查询问题
sxj19881213
sqlHibernateHQL联合查询
最近在用hibernate做项目,遇到了联合查询的问题,以及联合查询中的N+1问题。
针对无外键关联的联合查询,我做了HQL和SQL的实验,希望能帮助到大家。(我使用的版本是hibernate3.3.2)
1 几个常识:
(1)hql中的几种join查询,只有在外键关联、并且作了相应配置时才能使用。
(2)hql的默认查询策略,在进行联合查询时,会产
- struts2.xml
wuai
struts
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache