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

题目描述

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

一 . 思维发散

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

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

二 . 代码实现

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;
    }
}

 

posted @ 2019-06-19 23:02  WeiMLing  阅读(545)  评论(0编辑  收藏  举报