递归的执行顺序
一直以来都没有在意过递归的执行顺序,当有一天刷剑指offer时看答案看不懂,在代码的方法中第三行,递归本方法。思路就彻底乱了,到底谁前谁后。直接扔代码:
public class Solution {
private TreeNode pre;
private TreeNode head;
public TreeNode Convert(TreeNode pRootOfTree) {
inorder(pRootOfTree);
return head;
}
private void inorder(TreeNode P)
{
if(P== null)
return;
inorder(P.left);
if(head==null)
{
head = P;
pre = P;
}
else
{
pre.right = P;
P.left = pre;
pre = P;
}
inorder(P.right);
}
}
```java
在inorder方法中,inorder(P.left);
相当于inorder(P.left);
inorder(P.left.left);
直到后面为空为止。
而且是需要等inorder(P.left)执行完之后,才能继续往下执行。