十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
这个可以使用递归来实现,具体代码如下:
创新互联公司专业成都网站建设、成都做网站,集网站策划、网站设计、网站制作于一体,网站seo、网站优化、网站营销、软文发稿等专业人才根据搜索规律编程设计,让网站在运行后,在搜索中有好的表现,专业设计制作为您带来效益的网站!让网站建设为您创造效益。
import java.io.File;
public class Demo {
public static void main(String[] args) {
File file = new File("C:\\");// 指定文件目录
method(file);
}
public static void method(File file) {
File[] fs = file.listFiles();// 得到File数组
if(fs!=null) {// 判断fs是否为null
for(File f : fs) {
if(f.isFile()) {// 如果是文件直接输出
System.out.println(f.getName());
} else {
method(f);// 否则递归调用
}
}
}
}
}
前pre(root)
{ if(root==null)return null;
visit(root);pre(root.left);pre(root.right);
}
中in(root)
{ if(root==null)return null;
in(root.left);visit(root);in(root.right);
}
后post(root)
{ if(root==null)return null;
post(root.left);post(root.right);visit(root);
}
这个不是很难理解哈,就是使用递归来遍历树,LZ请看:
首先,这个preOrder这个方法是用来遍历树的,貌似说了个废话,它需要一个
BinaryNodeE p的参数,这个参数就是树上的一个节点。
首先,假如当前p是A,那么判断p是否为null,也就是是否有这个节点,如果有,那么打印p.data,应该是p的信息。
然后再次调用这个preOrder遍历树的方法preOrder(p.left);preOrder(p.right),但这此传入的节点已经不是A了,而是p.left和p.right,也就是B和C,然后依然跟上面一样,先判断是否有该节点,如果有就打印节点信息,然后再次调用该方法传入自己的左右孩子节点,一次递归循环,自己的左右孩子为null的时候,当然不会走if语句里面的内容,递归也就自然结束了
希望可以帮到LZ
//类Node定义二叉树结点的数据结构;
//一个结点应包含结点值,左子结点的引用和右子结点的引用
class Node{
public Node left; //左子结点
public Node right; //右子结点
public int value; //结点值
public Node(int val){
value = val;
}
}
public class Traversal
{
//read()方法将按照前序遍历的方式遍历输出二叉树的结点值
//此处采用递归算法会比较简单,也容易理解,当然也可以用
//循环的方法遍历,但会比较复杂,也比较难懂。二叉树遍历
//用递归算法最为简单,因为每个结点的遍历方式都是,根,
//左,右,递归的调用可以让每个结点以这种方式遍历
public static void read(Node node){
if(node != null){
System.out.println(node.value);//输出当前结点的值
if(node.left != null)
read(node.left); //递归调用 先读左结点
if(node.right != null)
read(node.right); //递归调用 后读右结点
}
}
public static void main(String[] args){
//初始化5个结点,分别初始值为1,2,3,4,5
Node n1 = new Node(1);
Node n2 = new Node(2);
Node n3 = new Node(3);
Node n4 = new Node(4);
Node n5 = new Node(5);
//构建二叉树,以n1为根结点
n1.left = n2;
n1.right = n5;
n2.left = n3;
n2.right = n4;
read(n1);
}
}
注释和代码都是我自己写的,如果楼主觉得有的注释多余可以自己删除一些!代码我都编译通过,并且运行结果如你提的要求一样!你只要把代码复制编译就可以了,注意要以文件名Traversal.java来保存,否则编译不通过,因为main函数所在的类是public类型的!
可以通过计算出二叉树所在节点的元素顺序,然后再数组中通过树节点的顺序值也就是下标,拿到元素。