题目来源:链接
题目描述:
输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。
代码实现:
def depth(root):
if not root:
return 0
return max(depth(root.left),depth(root.right))+1
解题思路:
简单的递归求树深,注意递归函数首先要确定递归结束条件
题目来源:链接
题目描述:
输入一棵二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树中任意节点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。
代码实现:
def isBalance(root):
if not root:
return True
return abs(depth(root.left)-depth(root.right))<=1 and\
isBalance(root.left) and isBalance(root.right)
def depth(root):
if not root:
return 0
return max(depth(root.left),depth(root.right))+1
解题思路:
注意对当前节点求了树深并且判断是否平衡之后还需要递归到子树中求树深且判断是否平衡
要确保每个子树都是平衡的