剑指Offer的学习笔记(C#篇)-- 二叉树的深度(详讲递归)

题目描述

输入一棵二叉树,求该树的深度。从根结点到叶结点依次通过的结点(含根、叶结点)造成树的一条路径,最长路径的长度为树的深度。

一 . 思惟发散函数

        借助这个题目,我想用一个更好理解的方法说一说递归。借助数学上的小括号来更好的理解递归,我作太小学生家教,记得这应该是小学四年级的题目(符号的计算顺序)。直接上图吧。spa

        也许写的不够严谨,但传达的思想没有错,一样采用的是举例法,假设须要递归的函数是法 f(),递归一次就在相应的位置插上一个f(),所有搞定后就变成一个如上图所示的那个了,接下来就是计算顺序咯,不会的话,看一看小学四年级数学,应该会有帮助。code

二 . 代码实现

class Solution
{
    public int TreeDepth(TreeNode pRoot)
    {
        // write code here
        //鲁棒判断
        if (pRoot == null)
        {
        return 0;
        }
        //左右递归
        int left = TreeDepth(pRoot.left);
        int right = TreeDepth(pRoot.right);
        //加一运算
        return System.Math.Max(left,right)+1;
    }
}
相关文章
相关标签/搜索