[Leetcode]翻转二叉树&路径总和
翻转二叉树
翻转一棵二叉树。
示例:
1 | 输入: |
解题思路&题解
利用递归,将左子树和右子树交换。代码如下:
1 | func invertTree(root *TreeNode) *TreeNode { |
路径总和
给你二叉树的根节点
root
和一个表示目标和的整数targetSum
,判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和targetSum
。
叶子节点 是指没有子节点的节点。
示例 1:
1 | 输入:root = [5,4,8,11,null,13,4,7,2,null,null,null,1], targetSum = 22 |
示例 2:
1 | 输入:root = [1,2,3], targetSum = 5 |
示例 3:
1 | 输入:root = [1,2], targetSum = 0 |
提示:
- 树中节点的数目在范围
[0, 5000]
内 -1000
<= Node.val <=1000
-1000
<= targetSum <=1000
解题思路&题解
这题和之前的求两数和
差不多思路,将已遍历的节点值放入haspMap
中,并且每次访问节点的时候,计算当前节点和目标数相减后的值是否存在hashMap
中。
具体思路如下
- 读取当前节点的值
- 将
当前节点的值
放入hashMap
中 - 判断
targetSum - 当前节点的值
是否在hashMap
中 - 在则返回
true
,不在则继续遍历
1 | func hasPathSum(root *TreeNode, targetSum int) bool { |