1、513. 找树左下角的值
题目:
给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值。
假设二叉树中至少有一个节点。
思路:
- 递归,规则,基本可以自己写出来
var maxDepth int
var res int
func findBottomLeftValue(root *TreeNode) int {
// 代码一刷,递归,规则
res = 0
maxDepth = 0
di(root, 1)
return res
}
func di(node *TreeNode, depth int) {
if node.Left == nil && node.Right == nil {
if depth > maxDepth {
maxDepth = depth
res = node.Val
}
}
if node.Left != nil {
depth++
di(node.Left,depth)
depth--
}
if node.Right != nil {
depth++
di(node.Right,depth)
depth--
}
}
2、112. 路径总和
题目:
给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。如果存在,返回 true ;否则,返回 false 。
叶子节点 是指没有子节点的节点。
思路:
- 前序遍历,中左右, wc 我独立写出来的
- 路经总和2,求路径大体思路一样,但有个结果我算错了
func hasPathSum(root *TreeNode, targetSum int) bool {
return qian(root,0,targetSum)
}
func qian(node *TreeNode,ans,targetSum int) bool {
if node == nil {
return false
}
ans += node.Val
if node.Left == nil && node.Right == nil {
if ans == targetSum {
return true
}
}
return qian(node.Left, ans,targetSum) || qian(node.Right, ans,targetSum)
}
3、
题目:
思路: