递归计算的极好材料,一般以二叉树为例
一般模式
伪代码如下
public result calTree(TreeNode root, Result curResult){
if(root == null){
return curResult;
} else {
Result leftResult = calTree(root.left, curResult);
Result rightResult = calTree(root.right, curResult);
return cal(leftResult, rightResult);
}
}
计算树的深度
public int maxDepth(TreeNode root) {
if (root == null)
return 0;
int left = maxDepth(root.left);
int right = maxDepth(root.right);
return Math.max(left, right) + 1;
}
遍历输出树
private List<Integer> preOrder(TreeNode node, List<Integer> list){
if(node != null){
if(node.left == null && node.right == null){
list.add(node.val);
} else {
list.add(node.val);
preOrder(node.left, list);
preOrder(node.right, list);
}
}
return list;
}
private List<Integer> inOrder(TreeNode node, List<Integer> list){
if(node != null){
inOrder(node.left, list);
list.add(node.val);
inOrder(node.right,list);
}
return list;
}