剑指offer—二叉树的深度

华电北风吹
天津大学认知计算与应用重点实验室
日期:2015/10/5

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

解析:递归求解,利用&把其它叶子节点的深度传递到别的叶子节点上,进行更新树的深度。

/*
struct TreeNode {
    int val;
    struct TreeNode *left;
    struct TreeNode *right;
    TreeNode(int x) :
            val(x), left(NULL), right(NULL) {
    }
};*/
class Solution {
public:
    int TreeDepth(TreeNode* pRoot)
    {
        if(pRoot==NULL)
            return 0;
        int length=0;
        FindDeep(pRoot,1,length);
        return length;
    }

    void FindDeep(TreeNode* p,int nodedepth,int &treeDepth)
    {
        if(nodedepth>treeDepth)
            treeDepth=nodedepth;
        if(p->left!=NULL)
            FindDeep(p->left,nodedepth+1,treeDepth);
        if(p->right!=NULL)
            FindDeep(p->right,nodedepth+1,treeDepth);
    }
};

你可能感兴趣的:(剑指offer—二叉树的深度)