说起树的递归遍历,斐波那契的递归遍历,都能很快写出来。但是昨天同学问我下面这段代码中,递归具体的执行过程,我却没能说清楚:
1 if(root==null){
2 return 0;
3 }
4 int left=maxDeepth(root.left);
5 int right=maxDeepth(root.right);
6 return left>right?left+1:right+1;
很明显这在求树的深度。那么程序执行到第四行时,会不会先将left的递归调用压入虚拟机栈中继续向下执行,一直到return。这个算法的思想很简单,但是结合到具体的执行原理,就讲不清了。接下来是研究心得:
首先假设有这样一棵树:
在和同学的讨论中,将上面的代码做了调整:
if (root == null) {
return 0;
}
System.out.println("当前节点值:"+root.val+" 左树开始时间:"+System.nanoTime()+"\n");
int left = maxDeepth(root.left);
System.out.println("当前节点值:"+root.val+" 右树开始时间:"+System.nanoTime()+"当前节点左树深度值:"+left+"\n");
int right = maxDeepth(root.right);
System.out.println("当前节点值:"+root.val+" 树的结束时间:"+System.nanoTime()+"当前节点右树深度值:"+rig
递归的运行过程
最新推荐文章于 2024-06-10 19:27:49 发布