书本题目要求遍历下面的二叉树,这个我是办到了,但是其中有些细节,我理解不了,请高手大神们帮忙指点一下!我套用了书中例题的代码,我对这个代码一开始是表示怀疑的,但是一运行发现是对的。之后我就想看看到底是怎么运作的,代码和结果如下: public static Vector<TreeNode> rootMid(TreeNode root){//中序遍历
Vector<TreeNode> result=new Vector<TreeNode>();
if (root==null) {
return result;
}
System.out.print("一"+root.nodevalue+",");
Vector<TreeNode> lNodes=rootMid(root.lNode);
System.out.print("二"+root.nodevalue+";");
result.addAll(lNodes);
result.add(root);
Vector<TreeNode> rNodes=rootMid(root.rNode);
result.addAll(rNodes);
return result;
}public class DateStructure {
public static void main(String[] args) {
TreeNode a,b,d,g,e,f,h;
h=new TreeNode("h");
f=new TreeNode("f",h,null);
e=new TreeNode("e",f,null);
g=new TreeNode("g");
d=new TreeNode("d",g,null);
b=new TreeNode("b",d,e);
a=new TreeNode("a",b,null);
Vector<TreeNode> result=new BinaryTree().rootMid(a);
System.out.print("中序遍历结果:");
for(TreeNode tn:result){
System.out.print("、"+tn.nodevalue);
}
}
}运行后结果:一a,一b,一d,一g,二g;二d;二b;一e,一f,一h,二h;二f;二e;二a;中序遍历结果:、g、d、b、h、f、e、a首先“一”字开头的部分我是理解的,我觉得方法递归的顺序就是这样,但是遍历结果我理解不了,虽然我知道这个结果对题目要求来说是正确的,但是我的理解结果更倾向“一”这样的顺序,就算是栈那样的后来居上的添加方式,那“a”不也应该是排中间吗?另外“二”开头的字母,它这个输出方法和“一”是一样的,代码中并没有对root进行重新赋值或排序,怎么就变成这样了?求指点!!!
添加回答
举报
0/150
提交
取消