python 二叉树的深度

题目描述

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

 

'''
记得之前刷题的时候,前面有一题也是要实现:输出二叉树中路径之和为某个给定数值的题目
都是要先找到所有从根节点出发,一直到叶子节点的所有路径
'''
class Solution:
    def TreeDepth(self, pRoot):
        # write code here
        def recurr(pRoot):
            if pRoot is None:
                return 0
            if pRoot.left is not None or pRoot.right is not None:
                return max(recurr(pRoot.left), recurr(pRoot.right)) + 1
            else:
                return 0
        if pRoot is None:
            return 0
        output = recurr(pRoot)
        return output+1#因为题目认为只包含一个根节点的二叉树深度为1
    '''
    {1,2,3,4,5,#,6,#,#,7}{1,2,3,4,5,#,6,#,#,7}
    对二叉树的每个节点进行递归的遍历,判断当前节点的左孩子和右孩子中有一个不为空,则depth加1
    Solution().recurr(pRoot)
    假设对于二叉树:
        1
       / \
      2   3
     / \   \
    4   5   7
    
    TreeDepth应该是recurr函数,下面只是说明含义
    TreeDepth(pRoot)
        
        max(self.TreeDepth(pRoot.left),self.TreeDepth(pRoot.right))+1
            self.TreeDepth(pRoot.left)
              2   
             / \
            4   5
                max(self.TreeDepth(pRoot.left), self.TreeDepth(pRoot.right)) + 1
                    self.TreeDepth(pRoot.left)
                        4
                        return 0
                    self.TreeDepth(pRoot.right)
                        5
                        return 0
            return 1
            self.TreeDepth(pRoot.right)
                3
                 \
                  7
                max(self.TreeDepth(pRoot.left), self.TreeDepth(pRoot.right)) + 1
                    self.TreeDepth(None)
                        return 0
                    self.TreeDepth(7)
                        return 0
                return 1
            return 1
            
        return 2            
    '''


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值