用 Python 编写程序检查树的中序序列是否为回文
pythonserver side programmingprogramming更新于 2026/2/2 10:20:17
假设我们有一个二叉树,每个节点包含一个 0-9 的数字,我们必须检查它的中序遍历是否为回文。
因此,如果输入如下

则输出将为 True,因为它的中序遍历为 [2,6,10,6,2]。
要解决这个问题,我们将遵循以下步骤 −
- 如果 root 为空,则
- 返回True
- stack := 一个新的堆栈
- curr := root
- inorder := 一个新的列表
- 当 stack 不为空或 curr 不为 null 时,执行
- 当 curr 不为 null 时,执行
- 将 curr 推入堆栈
- curr := curr 的左侧
- node := 从堆栈弹出的元素
- 在 inorder 的末尾插入节点的值
- curr := 节点的右侧
- 当 curr 不为 null 时,执行
- 当 inorder 与 inorder 的反向顺序相同时返回 true,否则返回 false。
让我们看看下面的实现以便更好地理解 −
示例
class TreeNode: def __init__(self, data, left = None, right = None): self.val = data self.left = left self.right = right class Solution: def solve(self, root): if not root: return True stack = [] curr = root inorder = [] while stack or curr: while curr: stack.append(curr) curr = curr.left node = stack.pop() inorder.append(node.val) curr = node.right return inorder == inorder[::-1] ob = Solution() root = TreeNode(6) root.left = TreeNode(2) root.right = TreeNode(6) root.right.left = TreeNode(10) root.right.right = TreeNode(2) print(ob.solve(root))
输入
root = TreeNode(6) root.left = TreeNode(2) root.right = TreeNode(6) root.right.left = TreeNode(10) root.right.right = TreeNode(2)
输出
True
相关文章
有用资源
python 参考教程 - 该教程包含有关 python 的更多信息:https://www.cainiaomax.com/python/

