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
}