题目描述
给定一个二叉树 root
,返回其最大深度。
二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。
示例 1:
输入:root = [3,9,20,null,null,15,7] 输出:3
示例 2:
输入:root = [1,null,2] 输出:2
思路
剑指offer二叉树的深度-CSDN博客
1)递归地从上向下走
2)遍历到底部(叶子结点)时,当前层的长度为1
3)再逐渐往回返,每个当前层的长度为左右子树长度的较大值+1
4)如果当前没节点,返回0
# Definition for a binary tree node.
class TreeNode(object):
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
class Solution(object):
def maxDepth(self, root):
"""
:type root: TreeNode
:rtype: int
"""
if not root:
return 0
ldepth = self.maxDepth(root.left)
rdepth = self.maxDepth(root.right)
return max(ldepth,rdepth)+1
if __name__=='__main__':
s=Solution()
#构建二叉树
root=TreeNode(1)
node1=TreeNode(2)
node2=TreeNode(3)
node3=TreeNode(4)
node4=TreeNode(5)
node5=TreeNode(6)
node6=TreeNode(7)
root.left=node1
root.right=node2
node1.left=node3
node1.right=node4
node2.right=node5
node4.left=node6
node3.left=node3.right=node6.left=node6.right=node4.right=node2.left=node5.left=node5.right=None
#调用函数
print(s.maxDepth(root))