int lDepth = maxDepth(node-> left); int rDepth = maxDepth(node-> right);

时间:2018-10-19 04:28:08

标签: data-structures

我是学习二叉树概念的新手。 我遇到以下问题:

int lDepth = maxDepth(node->left); 
int rDepth = maxDepth(node->right);

在这段代码中,什么是

  

“ maxDepth(node-> left);”

'LDepth'变量中存储的内容与下一行相同, 每次递归调用后-'lDepth'变量中存储了什么?

我想要一个具体的答案。

2 个答案:

答案 0 :(得分:0)

根据您提供的代码,我会说lDepth正在存储left subtree的深度,而rDepth是存储right subtree的深度,其中{{1 }}是树的根。递归地适用于所有子树。

  

“ maxDepth(node-> left);

您正在递归调用node函数以计算根为maxDepth的左子树的深度。

答案 1 :(得分:0)

maxDepth()是一个递归函数,它被递归调用,直到遇到NULL pointer表示树的结尾。 maxDepth(node->left)是对maxDepth函数的递归调用,其中子树的根源为node->left。参见下图

           node
           /  \
       l_node   r_node
       / \      /\ 
    left  1    3  right
(lDepth)          (rDepth)

l_node=node->left,因此调用了maxDepth(l_node)。同样,r_node=node->right因此将调用maxDepth(r_node)

希望这对您有所帮助。