题目
- 单值二叉树
题目描述
如果二叉树每个节点都具有相同的值,那么该二叉树就是单值二叉树。
只有给定的树是单值二叉树时,才返回 true;否则返回 false。
思路
1.深度遍历二叉树所有节点
2.节点存储到map中
3.如果map长度为1则位单值二叉树,否则不是单值二叉树
示例
二叉树
data := &TreeNode{
Val:1,
Left:&TreeNode{
Val:1,
},
Right:&TreeNode{
Val:2,
},
}
返回false
代码
package leetcode
import(
"log"
)
type TreeNode struct {
Val int
Left *TreeNode
Right *TreeNode
}
// isUnivalTree
// 单值二叉树
func isUnivalTree(root *TreeNode) bool {
data := map[int]bool{}
var preOrder func(root *TreeNode)
preOrder = func(root *TreeNode){
if root == nil {
return
}
if _,ok := data[root.Val]; !ok{
data[root.Val] = true
}
preOrder(root.Left)
preOrder(root.Right)
}
preOrder(root)
log.Println(data)
return len(data) == 1
}
参考
来源:力扣(LeetCode)
链接:leetcode-cn.com/problems/un…
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。