用递归写一个方法打印一个叉树节点,中软国际面试题 如题, 用递归写一个方法打印一个叉树节点,应该如何写呢?求指点阿,谢谢了!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 递归就是调用自身,我觉得可以用数组来做,进行分层,判断每层的length是否为0 public void treeTraversal(Node node) { while(node.hasNextChild()) { childnode = node.nextChild(); print(childnode); treeTraversal(childnode); }} 我觉得既然是java,还是最好体现一种面向对象的思想。。也就是把每个节点看成一个对象,这个对象包含层次,值,子节点对象这几个属性。也可以多加几个属性。方法的时候就是读一个节点,如果不是最底层的节点的话就生成对象,并让该方法读子节点,递归调用 public static String getTreeInfo(Branch root){ ArrayList<ICorp> subordinateList = root.getSubordinate(); String info = ""; for(ICorp s :subordinateList){ if(s instanceof Leaf){ //叶子节点 info = info + s.getInfo()+"\n"; }else{ //非叶子节点 info = info + s.getInfo() +"\n"+ getTreeInfo((Branch)s); } } return info; }遍历叉树分为深度优先和广度优先,上面的为深度优先,依据用户传递来的节点获得该节点下的所以节点信息。并且树状模型很符合组合模式:所有节点都是一个对象,树枝节点和叶子节点有许多共性。 public void treeTraversal(Node node) {if(有子节点){for(node中所有的子节点i)treeTravelsal(i);}System.out.println(a.value);楼主我写过一个二叉树的打印方法,不妨参考下https://www.dropbox.com/s/j497saw4ppy6ojk/TestNode.java 上面改下public void treeTraversal(Node node) {if(node.有子节点){for(node中所有的子节点i)treeTravelsal(i);}打印node; 给几段伪代码//先序traversal(Node n) { print(n);//输出 if(n.hasLeft()) { traversal(n.left); } if(n.hasRight()) { traversal(n.right); }}//中序traversal(Node n) { if(n.hasLeft()) { traversal(n.left); } print(n);//输出 if(n.hasRight()) { traversal(n.right); }}//后序traversal(Node n) { if(n.hasLeft()) { traversal(n.left); } if(n.hasRight()) { traversal(n.right); } print(n);//输出} java调用C++的dll出现堆栈溢出错误 tomcat 连接池 无法关闭 TimerTask被Timer周期执行,TimerTask中静态变量值丢失 java在linux下的运行问题 帮我加点注释intn=30到nj*=i;,谢了 JAVA内部类在程序中的作用是什么? 为什么JB中的输入不接受回车,而控制台输入又接受? 散分 大家快来给点意见吧!----加密的问题最好有原码我从来没做过! 请大家帮忙,谢谢! 【分享】基于SWING+JAVAFX的JAVA MP3播放器 两个递归方法的比较哪个思路更好一些,更效率一些。
while(node.hasNextChild()) {
childnode = node.nextChild();
print(childnode);
treeTraversal(childnode);
}
}
也就是把每个节点看成一个对象,这个对象包含层次,值,子节点对象这几个属性。也可以多加几个属性。
方法的时候就是读一个节点,如果不是最底层的节点的话就生成对象,并让该方法读子节点,递归调用
ArrayList<ICorp> subordinateList = root.getSubordinate();
String info = "";
for(ICorp s :subordinateList){
if(s instanceof Leaf){ //叶子节点
info = info + s.getInfo()+"\n";
}else{ //非叶子节点
info = info + s.getInfo() +"\n"+ getTreeInfo((Branch)s);
}
}
return info;
}
遍历叉树分为深度优先和广度优先,上面的为深度优先,依据用户传递来的节点获得该节点下的所以节点信息。
并且树状模型很符合组合模式:所有节点都是一个对象,树枝节点和叶子节点有许多共性。
public void treeTraversal(Node node) {
if(有子节点){
for(node中所有的子节点i)
treeTravelsal(i);
}
System.out.println(a.value);楼主我写过一个二叉树的打印方法,不妨参考下
https://www.dropbox.com/s/j497saw4ppy6ojk/TestNode.java
if(node.有子节点){
for(node中所有的子节点i)
treeTravelsal(i);
}
打印node;
traversal(Node n) {
print(n);//输出
if(n.hasLeft()) {
traversal(n.left);
}
if(n.hasRight()) {
traversal(n.right);
}
}//中序
traversal(Node n) {
if(n.hasLeft()) {
traversal(n.left);
}
print(n);//输出
if(n.hasRight()) {
traversal(n.right);
}
}//后序
traversal(Node n) {
if(n.hasLeft()) {
traversal(n.left);
}
if(n.hasRight()) {
traversal(n.right);
}
print(n);//输出
}