题目描述
输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。
''' 记得之前刷题的时候,前面有一题也是要实现:输出二叉树中路径之和为某个给定数值的题目 都是要先找到所有从根节点出发,一直到叶子节点的所有路径 ''' 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 '''