《牛客网剑指offer38题》输入一棵二叉树,求该树的深度

来源:互联网 发布:手机shell是什么软件 编辑:程序博客网 时间:2024/06/05 14:55

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

结果:牛客网编译通过

思路及代码:


//中心思想就是递归遍历一遍二叉树,定义一个全局变量存储最大路径长度。
    int length  = 0; //最大路径长度
    int TreeDepth(TreeNode* pRoot)
    {
     if(pRoot == NULL)
            return 0;
        int i = 1;
        whiTre(pRoot->left,i); //遍历根节点的左节点,此时深度为1
        whiTre(pRoot->right,i);//右节点
        return length;
    }
    void whiTre(TreeNode* root, int i){  //遍历二叉树的递归函数
        if(root != NULL){ //如果当前节点不是空,继续遍历二叉树
            i++;
            whiTre(root->left,i);
         whiTre(root->right,i);
        }
        else{   //递归结束条件就是当前节点为空了,遍历到了叶子结点的下一个节点了,
           if(i>length) length = i;    //给最长路径这个全局变量赋值
        }
        return;
    }


0 0
原创粉丝点击