要求:
二叉树的最大深度

二叉树和递归,我不太扎实的地方。今天就来简单的自己分析一下。

二叉树的数据结构很简单

public class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) { val = x; }
}

重点是递归,递归一定要有出口,不然会死循环,还要有递归条件。比如这个题,求二叉树的最大深度,可以用递归来解决。
给定任意节点,先算他的左右节点高度,如果左高则左高度加1,右高则右高度加1,然后判断左右高度,返回高的值。这样这个节点的高度值就有了,如果它没有左右子树,则返回1。这样递归下去,一直到所有节点都遍历到。

Code:

public class Solution {
public int maxDepth(TreeNode root) {
int leftDepth, rightDepth;
if(root == null) {
return 0;
} else {
if (root.left != null) {
leftDepth = maxDepth(root.left);
} else {
leftDepth = 0;
}
if (root.right != null) {
rightDepth = maxDepth(root.right);
} else {
rightDepth = 0;
}</p>

return leftDepth > rightDepth ? leftDepth + 1 : rightDepth + 1;
}
}
}
</code>