110.?平衡二叉樹
給定一個二叉樹,判斷它是否是高度平衡的二叉樹。
本題中,一棵高度平衡二叉樹定義為:
一個二叉樹每個節點?的左右兩個子樹的高度差的絕對值不超過 1 。
func isBalanced(root *TreeNode) bool {h:=getHeight(root)if h == -1{return false}fmt.Println(h)return true
}
func getHeight(root *TreeNode)int{if root == nil{return 0}l,r :=getHeight(root.Left),getHeight(root.Right)if l == -1 || r == -1{return -1}if l-r >1 || r-l >1{ return -1}//如果遇到左右子樹存在高度差距就直接返回return max(l,r) +1
}func max(a, b int) int {if a > b {return a }return b
}
257.?二叉樹的所有路徑?
?給你一個二叉樹的根節點?root
?,按?任意順序?,返回所有從根節點到葉子節點的路徑。
葉子節點?是指沒有子節點的節點。
var res []string
func binaryTreePaths(root *TreeNode) []string {res = []string{}travel(root,"")return res
}
func travel(node *TreeNode, s string){if node.Left == nil && node.Right == nil{v:= s+ strconv.Itoa(node.Val)res = append(res,v)return}s = s+ strconv.Itoa(node.Val)+"->"if node.Left!=nil{travel(node.Left,s)}if node.Right!= nil{travel(node.Right,s)}
}
404.?左葉子之和?
給你一個二叉樹的根節點?root
?,按?任意順序?,返回所有從根節點到葉子節點的路徑。
葉子節點?是指沒有子節點的節點。
左葉子就是 當前節點的左孩子沒有孩子?
func sumOfLeftLeaves(root *TreeNode) int {if root ==nil { return 0}lfV := sumOfLeftLeaves(root.Left)if root.Left!=nil && root.Left.Left == nil && root.Left.Right ==nil{lfV = root.Left.Val}riV:= sumOfLeftLeaves(root.Right)return lfV +riV
}