33,311
社区成员
发帖
与我相关
我的任务
分享
如果一棵树的结果如下:
a ---root
b c
e
模拟递归过程:
depth(root)
root不为空,
第一层执行语句1:
dep1 = (root->left);
第一层调用执行depth(root->left);
进入第二层
root->left不为空,
第二层执行语句1:
dep1 = depth(root->left->left);
root->left->left为空, 返回0.
第二层执行语句2:
dep2 = depth(root->left->right);
root->left->right为空, 返回0.
第二层执行语句3:
比较dep1和dep2大小,返回else语句部分return dep2+1;即返回0+1 = 1.
第二层调用结束.返回值为1.
这里得到第一层的dep1=1;
第一层执行语句2:
dep2 = (root->right);
第一层调用执行depth(root->right);
进入第二层
root->right不为空,
第二层执行语句1:
dep1 = depth(root->right->left);
root->left->left为空, 返回0.
第二层执行语句2:
dep2 = depth(root->right->right);
root->left->right不为空,
进入第三层,
depth(root->right->right);
第三层执行语句1:
dep1 = depth(root->right->right->left);
root->right->right->left为空, 返回0.
第三层执行语句2:
dep2 = depth(root->right->right->right);
root->right->right->right为空, 返回0.
第三层执行语句3:
比较dep1和dep2大小,返回else语句部分return dep2+1;即返回0+1 = 1.
第三层调用结束.返回值为1.
这里得到第二层的dep2=1;
第二层执行语句3:
比较dep1和dep2大小,返回else语句部分return dep2+1;即返回1+1 = 2.
第二层调用结束.返回值为2.
这里得到第一层的dep2=2;
比较第一层中的dep1和dep2,执行else语句部分, return dep2+1;即返回2+1=3;
第一层调用结束,返回值为3.