淘先锋技术网

首页 1 2 3 4 5 6 7

Python是一种高级编程语言,它有着强大的功能和丰富的库,使得很容易在Python中实现各种算法。对于求树的深度,Python提供了很多解决方法,其中比较常用的是递归方法。

def maxDepth(root):
if not root:
return 0
else:
left_depth = maxDepth(root.left)
right_depth = maxDepth(root.right)
return max(left_depth, right_depth) + 1

上面这段代码是一个求树深度的递归方法。对于一颗二叉树来说,它的深度是左子树深度和右子树深度的最大值加上1。

其中root表示当前子树的根节点,如果root是空节点,返回0;否则递归求左子树的深度和右子树的深度,并返回它们的最大值再加上1,即为当前子树的深度。

除了递归方法,Python还可以使用BFS(广度优先搜索)来求树深度。代码如下:

def maxDepth(root):
if not root:
return 0
queue = [root]
depth = 0
while queue:
size = len(queue)
for i in range(size):
cur = queue.pop(0)
if cur.left:
queue.append(cur.left)
if cur.right:
queue.append(cur.right)
depth += 1
return depth

这段代码使用了队列来实现BFS。对于每一层的节点,先将它们从队列中取出,再将它们的子节点加入队列中。只有当队列为空时,深度才会加1,并返回深度。

总结:Python中求树的深度有多种方法,其中递归和BFS是比较常用的方法。无论是哪种方法,都需要先理清楚树的结构,以及树的深度的定义。只有了解了这些,才能更好地解决问题。