書本題目要求遍歷下面的二叉樹,這個(gè)我是辦到了,但是其中有些細(xì)節(jié),我理解不了,請高手大神們幫忙指點(diǎn)一下!我套用了書中例題的代碼,我對這個(gè)代碼一開始是表示懷疑的,但是一運(yùn)行發(fā)現(xiàn)是對的。之后我就想看看到底是怎么運(yùn)作的,代碼和結(jié)果如下: 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("中序遍歷結(jié)果:");
for(TreeNode?tn:result){
System.out.print("、"+tn.nodevalue);
}
}
}運(yùn)行后結(jié)果:一a,一b,一d,一g,二g;二d;二b;一e,一f,一h,二h;二f;二e;二a;中序遍歷結(jié)果:、g、d、b、h、f、e、a首先“一”字開頭的部分我是理解的,我覺得方法遞歸的順序就是這樣,但是遍歷結(jié)果我理解不了,雖然我知道這個(gè)結(jié)果對題目要求來說是正確的,但是我的理解結(jié)果更傾向“一”這樣的順序,就算是棧那樣的后來居上的添加方式,那“a”不也應(yīng)該是排中間嗎?另外“二”開頭的字母,它這個(gè)輸出方法和“一”是一樣的,代碼中并沒有對root進(jìn)行重新賦值或排序,怎么就變成這樣了?求指點(diǎn)?。?!
添加回答
舉報(bào)
0/150
提交
取消