golang的队列实现
package main
import . "nc_tools"
/*
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param pRoot TreeNode类
* @return bool布尔型
*/
func isSymmetrical( pRoot *TreeNode ) bool {
// write code here
if pRoot==nil{
return true
}
//双队列
q1:=[]*TreeNode{pRoot.Left}
q2:=[]*TreeNode{pRoot.Right}
for len(q1)!=0&&len(q2)!=0{
//出队
n1:=q1[0]
n2:=q2[0]
q1=q1[1:]
q2=q2[1:]
//判断
if n1==nil&&n2==nil{
continue
}else if n1!=nil&&n2!=nil{
if n1.Val!=n2.Val{
return false
}else{
q1 = append(q1, n1.Left)
q1 = append(q1, n1.Right)
q2 = append(q2, n2.Right)
q2 = append(q2, n2.Left)
}
}else{
return false
}
}
return true
}

京公网安备 11010502036488号