BM31 对称的二叉树
判断一个二叉树是否是对称的,采用层次遍历,对于每一层,判断其是否是对称的。每一层的空节点也要记录。
解法1: 层次遍历
package main
import . "nc_tools"
/*
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* @param pRoot TreeNode类
* @return bool布尔型
*/
func isSym(arr [] *TreeNode) bool{
i,j := 0,len(arr)-1
for i<j{
if arr[i].Val == arr[j].Val{
i++
j--
}else{
return false
}
}
return true
}
func isSymmetrical( pRoot *TreeNode ) bool {
// write code here
if pRoot == nil{
return true
}
queue := make([]*TreeNode,0,1000)
queue = append(queue,pRoot)
levelNodes :=1
flag := true
for len(queue) > 0 && flag{
nextLevel := 0
end := 0
if isSym(queue) == false{
return false
}
//记录下一层的节点数
for levelNodes > 0{
tmp := queue[0]
if len(queue) == 1{
queue = queue[0:0]
}else{
queue = queue[1:]
}
levelNodes--
if(tmp.Left != nil){
nextLevel++
end++
queue = append(queue,tmp.Left)
}else{
nextLevel++
queue = append(queue,new(TreeNode))
queue[len(queue)-1].Val = 1001
}
if(tmp.Right != nil){
nextLevel++
end++
queue = append(queue,tmp.Right)
}else{
nextLevel++
queue = append(queue,new(TreeNode))
queue[len(queue)-1].Val = 1001
}
}
levelNodes = nextLevel
if end == 0{
flag = false
}
}
return true
}
运行时间 1990ms
占用内存 284428KB
解法2: 深度优先搜索 递归
package main
import . "nc_tools"
/*
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* @param pRoot TreeNode类
* @return bool布尔型
*/
func dfs(left *TreeNode,right *TreeNode) bool{
if left == nil && right == nil{
return true
}
if left ==nil || right == nil || left.Val != right.Val{
return false
}
return dfs(left.Left,right.Right) && dfs(left.Right,right.Left)
}
func isSymmetrical( pRoot *TreeNode ) bool {
// write code here
if pRoot == nil{
return true
}
return dfs(pRoot.Right,pRoot.Left)
}
运行时间 5ms
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能