📌  相关文章
📜  国际空间研究组织 | ISRO CS 2008 |问题 21(1)

📅  最后修改于: 2023-12-03 15:23:02.533000             🧑  作者: Mango

国际空间研究组织 | ISRO CS 2008 |问题 21

该问题是关于二叉树的深度的问题。给定一个二叉树的根节点,要求编写一个函数来计算该二叉树的深度。

问题描述

给定一个二叉树的根节点,请编写一个函数来计算该二叉树的深度。你可以假设该二叉树是一棵拥有n个节点的完全二叉树,其结构如下:

     1
   /   \
  2     3
 / \   / \
4   5 6   7

示例:

def depth(root):
    pass

root = TreeNode(1)
root.left = TreeNode(2)
root.right = TreeNode(3)
root.left.left = TreeNode(4)
root.left.right= TreeNode(5)
root.right.left = TreeNode(6)
root.right.right = TreeNode(7)

print(depth(root))  # 输出:3
解题思路

二叉树的深度可以使用递归来实现。若根节点为 None,则返回 0。否则,分别计算左子树和右子树的深度,取较大值加 1 即可。

递归函数定义

def depth(root):
    if not root:
        return 0
    left_depth = depth(root.left)
    right_depth = depth(root.right)
    return max(left_depth, right_depth) + 1
完整代码
class TreeNode:
    def __init__(self, val):
        self.val = val
        self.left = None
        self.right = None

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

root = TreeNode(1)
root.left = TreeNode(2)
root.right = TreeNode(3)
root.left.left = TreeNode(4)
root.left.right= TreeNode(5)
root.right.left = TreeNode(6)
root.right.right = TreeNode(7)

print(depth(root))  # 输出:3

以上就是计算二叉树深度的代码实现,可以对二叉树这种数据结构有更深入的了解。