返回

用Python征服“对称二叉树”:从基础到实战

后端







## “对称二叉树”简介
“对称二叉树”是指一棵二叉树具有轴对称的结构,即从根节点开始,左右子树关于轴的对称是相同的。比如,以下二叉树就是对称的:

   1
  / \
 2   2
/ \ / \

3 4 4 3


## Python实现“对称二叉树”判断算法
接下来,让我们用Python实现“对称二叉树”的判断算法,具体步骤如下:

1. **定义一个递归函数** 来判断一棵二叉树是否对称。
2. **在递归函数中,比较二叉树的左子树和右子树是否对称。** 
3. **如果左子树和右子树都对称,则二叉树是对称的。** 
4. **否则,二叉树不是对称的。** 

```python
def is_symmetric(root):
  """
  判断一棵二叉树是否对称。

  Args:
    root: 二叉树的根节点。

  Returns:
    True if the tree is symmetric, False otherwise.
  """

  if root is None:
    return True

  return is_symmetric_helper(root.left, root.right)

def is_symmetric_helper(left, right):
  """
  判断两棵二叉树是否对称。

  Args:
    left: 第一棵二叉树的根节点。
    right: 第二棵二叉树的根节点。

  Returns:
    True if the trees are symmetric, False otherwise.
  """

  if left is None and right is None:
    return True

  if left is None or right is None:
    return False

  if left.val != right.val:
    return False

  return is_symmetric_helper(left.left, right.right) and is_symmetric_helper(left.right, right.left)

实战练习:判断二叉树是否对称

现在,让我们来使用上述算法判断以下二叉树是否对称:

       1
      / \
     2   2
    / \ / \
   3   4 4   3
root = TreeNode(1)
root.left = TreeNode(2)
root.right = TreeNode(2)
root.left.left = TreeNode(3)
root.left.right = TreeNode(4)
root.right.left = TreeNode(4)
root.right.right = TreeNode(3)

print(is_symmetric(root))  # True

输出结果为True,说明该二叉树是对称的。

总结

在本文中,我们介绍了“对称二叉树”的基本概念以及用Python实现“对称二叉树”判断算法的详细步骤。我们还通过一个实战练习来演示如何使用该算法判断二叉树是否对称。希望本文能够对您有所帮助。