这是一种在二叉树中查找最大数字的方法 彼此之间的2个递归线让我感到困惑。 有人可以告诉我如何跟踪这段代码。
public int findMax() {
return findMax(root);
}
public static int findMax(Node n) {
if(n == null)
return -1;
int maxLeft = findMax(n.left);
int maxRight = findMax(n.right);
return Math.max(((Integer)n.data).intValue(), Math.max(maxLeft, maxRight));
}
答案 0 :(得分:0)
(1)A
/ \
/ \
(2)B (5)C
/ \ / \
(3)N (4)N (6)N (7)N
我们假设我们调用函数findMax(A)
:
检查节点A是否为空指针 - >不,然后继续。
在A的左子树中找到以B为根的最大值。
这将调用函数findMax(B)
:
findMax(NULL)
由于Node为NULL,因此将返回-1。findMax(C)
: