280 字
1 分钟
LeetCode-101.对称二叉树
二叉树
给你一个二叉树的根节点
root, 检查它是否轴对称。
示例 1:
输入:root = [1,2,2,3,4,4,3]输出:true示例 2:
输入:root = [1,2,2,null,3,null,3]输出:false
递归的解法
思路:
-
这道题我们需要操纵两个节点,所以我们需要另起一个辅助函数,而不是像前几道用原本的函数。
-
在写这段代码的终止条件时,逻辑顺序非常重要。 我们必须先处理节点为空的情况,再处理节点不为空但值不相等的情况。如果你先把
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对称二叉树/

