/** * Definition for a binary tree node. * type TreeNode struct { * Val int * Left *TreeNode * Right *TreeNode * } */ func countNodes(root *TreeNode) (cnt int) { if root == nil { return } lvs := []*TreeNode{root} for n := len(lvs); n != 0; n = len(lvs) { node := lvs[n-1] lvs = lvs[:n-1] cnt++ if node.Left != nil { lvs = append(lvs, node.Left) } if node.Right != nil { lvs = append(lvs, node.Right) } } return }