280 字
1 分钟
LeetCode-101.对称二叉树

二叉树#

101. 对称二叉树

给你一个二叉树的根节点 root , 检查它是否轴对称。


示例 1:

img

输入:root = [1,2,2,3,4,4,3]
输出:true

示例 2:

img

输入:root = [1,2,2,null,3,null,3]
输出:false

递归的解法

思路:

  1. 这道题我们需要操纵两个节点,所以我们需要另起一个辅助函数,而不是像前几道用原本的函数。

  2. 在写这段代码的终止条件时,逻辑顺序非常重要。 我们必须先处理节点为空的情况再处理节点不为空但值不相等的情况。如果你先把 left.Val != right.Val 写在前面,一旦传入的是空指针,程序直接就 Panic了。

/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
func isSymmetric(root *TreeNode) bool {
if root == nil {
return true
}
return compare(root.Left, root.Right)
}
func compare(left, right *TreeNode) bool {
if left == nil && right == nil {
return true
}else if left == nil && right != nil {
return false
}else if left != nil && right == nil {
return false
}else if left.Val != right.Val {
return false
}
outside := compare(left.Left, right.Right)
inside := compare(left.Right, right.Left)
return outside && inside
}
LeetCode-101.对称二叉树
https://sheep44044.github.io/posts/算法/二叉树/leetcode-101对称二叉树/
作者
sheep44044
发布于
2026-03-15
许可协议
CC BY-NC-SA 4.0