剑指Offer 28. 对称的二叉树
1.LeetCode 剑指 Offer 03. 数组中重复的数字2.LeetCode 剑指 Offer 04. 二维数组中的查找3.LeetCode 剑指 Offer 08. 二叉树的下一个节点4.LeetCode 剑指 Offer 12. 矩阵中的路径5.LeetCode 剑指 Offer 11. 旋转数组的最小数字6.LeetCode 剑指 Offer 13. 机器人的运动范围7.剑指Offe 14- I. 剪绳子8.剑指Offer 14- II. 剪绳子 II9.剑指Offer 15. 二进制中1的个数10.剑指Offer 16. 数值的整数次方11.剑指Offer 17. 打印从1到最大的n位数12.剑指Offer 18. 删除链表的节点13.剑指Offer 20. 表示数值的字符串14.剑指Offer 21. 调整数组顺序使奇数位于偶数前面15.剑指Offer 22. 链表中倒数第k个节点16.剑指Offer 25. 合并两个排序的链表17.剑指Offer 26. 树的子结构18.剑指Offer 27. 二叉树的镜像
19.剑指Offer 28. 对称的二叉树
20.剑指Offer 29. 顺时针打印矩阵21.剑指Offer 30. 包含min函数的栈22.剑指Offer 31. 栈的压入、弹出序列23.剑指Offer 32 - I. 从上到下打印二叉树24.剑指Offer 32 - II. 从上到下打印二叉树 II25.剑指Offer 32 - III. 从上到下打印二叉树26.剑指Offer 33. 二叉搜索树的后序遍历序列27.剑指Offer 34. 二叉树中和为某一值的路径28.剑指Offer 35. 复杂链表的复制29.剑指Offer 42. 连续子数组的最大和30.剑指Offer 45. 把数组排成最小的数31.剑指Offer 32.剑指Offer 43. 1~n 整数中 1 出现的次数33.剑指 Offer 46. 把数字翻译成字符串34.剑指 Offer 47. 礼物的最大价值35.剑指Offer 48. 最长不含重复字符的子字符串36.剑指 Offer 49. 丑数37.剑指 Offer 50. 第一个只出现一次的字符38.剑指 Offer 51. 数组中的逆序对39.剑指 Offer 52. 两个链表的第一个公共节点40.剑指 Offer 53 - I. 在排序数组中查找数字 I41.剑指 Offer 53 - II. 0~n-1中缺失的数字42.剑指 Offer 54. 二叉搜索树的第k大节点43.剑指 Offer 55 - I. 二叉树的深度44.剑指 Offer 55 - II. 平衡二叉树45.剑指 Offer 56 - I. 数组中数字出现的次数46.剑指 Offer 57 - II. 和为s的连续正数序列47.剑指 Offer 56 - II. 数组中数字出现的次数 II48.剑指 Offer 58 - II. 左旋转字符串49.剑指 Offer 59 - I. 滑动窗口的最大值50.剑指 Offer 60. n个骰子的点数51.剑指 Offer 61. 扑克牌中的顺子52.剑指 Offer 62. 圆圈中最后剩下的数字53.剑指 Offer 63. 股票的最大利润54.剑指 Offer 64. 求1+2+…+n55.剑指 Offer 65. 不用加减乘除做加法56.剑指 Offer 66. 构建乘积数组57.剑指 Offer 67. 把字符串转换成整数58.剑指 Offer 68 - I. 二叉搜索树的最近公共祖先59.剑指 Offer 68 - II. 二叉树的最近公共祖先题目链接: 剑指Offer 28. 对称的二叉树
题目描述:
请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。
例如,二叉树 [1,2,2,3,4,4,3] 是对称的。
解法思路:
采用递归的方法,依次遍历根节点的左子树和右子树,判断左子树的左子树 与 右子树的右子树是否相等,左子树的右子树 与 右子树的左子树是否相等。
代码:
func isSymmetric(root *TreeNode) bool {
if root == nil {
return true
}
return dfs(root.Left,root.Right)
}
func dfs(l *TreeNode,r *TreeNode)bool{
if l== nil && r == nil {
return true
}
if l == nil || r == nil || l.Val != r.Val { //注意这里 || 条件的先后顺序,一定是先判空,再判断值是否相等,因为如果先判断值是否相等,对于空指针没有值,就会报空指针异常的错误。
return false
}
return dfs(l.Left,r.Right) && dfs(l.Right,r.Left)
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理