【发布时间】:2016-03-11 00:06:23
【问题描述】:
给定以下代码:
private int getHeight(Node root){
if(root == null){
return 0;
}
else{
int leftHeight = getHeight(root.leftChild);
int rightHeight = getHeight(root.rightChild);
if(leftHeight > rightHeight){
return leftHeight + 1;
}
else{
return rightHeight + 1;
}
}
}
我不明白的是这两行:
int leftHeight = getHeight(root.leftChild);
int rightHeight = getHeight(root.rightChild);
它是如何递归计算树的高度的?如果一棵树看起来像这样:
4
/ \
/ \
1 9
\ /
\ 8
2
\
\
3
这两行是怎么计算的??究竟递归如何在穿过树时添加1?
我的看法是:
int leftHeight = getHeight(root.leftChild); 使用1 转到节点并停在那里。
int rightHeight = getHeight(root.rightChild); 使用9 转到节点并停在那里。
我只是不明白它是如何遍历整个事物的。
详细的解释会很棒! 谢谢!
【问题讨论】:
标签: recursion tree binary-search-tree