From 2a72ebc5eb12dc46a434eb84b506e8e7dcec3709 Mon Sep 17 00:00:00 2001 From: linlihong <747682928@qq.com> Date: Mon, 2 Sep 2024 17:24:33 +0800 Subject: [PATCH] 2024/9/2 Hot100 binaryTree --- .../com/cool/hot100/binary_tree/Num236.java | 46 +++++++++++++ .../com/cool/hot100/binary_tree/Num437.java | 64 +++++++++++++++++++ 2 files changed, 110 insertions(+) create mode 100644 src/main/java/com/cool/hot100/binary_tree/Num236.java create mode 100644 src/main/java/com/cool/hot100/binary_tree/Num437.java diff --git a/src/main/java/com/cool/hot100/binary_tree/Num236.java b/src/main/java/com/cool/hot100/binary_tree/Num236.java new file mode 100644 index 0000000..57b3143 --- /dev/null +++ b/src/main/java/com/cool/hot100/binary_tree/Num236.java @@ -0,0 +1,46 @@ +package com.cool.hot100.binary_tree; + +import java.util.*; + +/** + * Created with IntelliJ IDEA. + * + * @Author: Cool + * @Date: 2024/09/02/14:38 + * DayNumber 2 + * Hard 2 + * Level ? + */ +public class Num236 { + + Map map = new HashMap<>(); + LinkedList list = new LinkedList<>(); + List> linkedLists = new ArrayList<>(); + + public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) { + if (root == null) return null; + dfs(root, p, q); + TreeNode node=new TreeNode(); + LinkedList treeNodes = linkedLists.get(0); + for (TreeNode treeNode : treeNodes) { + if(linkedLists.get(1).contains(treeNode)){ + node=treeNode; + } + } + return node; + } + + private void dfs(TreeNode root, TreeNode p, TreeNode q) { + if (root == null) return; + list.add(root); + map.put(root.val, root); + if (root==p||root==q){ + LinkedList copyList = new LinkedList<>(list); + linkedLists.add(copyList); + } + dfs(root.left, p, q); + dfs(root.right, p, q); + list.pollLast(); + } + +} diff --git a/src/main/java/com/cool/hot100/binary_tree/Num437.java b/src/main/java/com/cool/hot100/binary_tree/Num437.java new file mode 100644 index 0000000..9b9d483 --- /dev/null +++ b/src/main/java/com/cool/hot100/binary_tree/Num437.java @@ -0,0 +1,64 @@ +package com.cool.hot100.binary_tree; + +import org.junit.Test; + +import java.util.HashMap; +import java.util.LinkedList; +import java.util.Map; + +/** + * Created with IntelliJ IDEA. + * + * @Author: Cool + * @Date: 2024/09/02/10:25 + * DayNumber 1 + * Hard 2 + * Level ? + */ +public class Num437 { + + Map map = new HashMap<>(); + + public int pathSum(TreeNode root, int targetSum) { + map.put(0L, 1); + return pathSum(root, targetSum, 0L); + } + + public int pathSum(TreeNode root, int targetSum, Long sum) { + if (root == null) { + return 0; + } + int returnNum = 0; + sum += root.val; + returnNum = map.getOrDefault(sum - targetSum, 0); + map.put(sum, map.getOrDefault(sum, 0) + 1); + returnNum += pathSum(root.left, targetSum, sum); + returnNum += pathSum(root.right, targetSum, sum); + map.put(sum, map.getOrDefault(sum, 0) - 1); + return returnNum; + } + + @Test + public void test() { + TreeNode node11 = new TreeNode(1); + TreeNode node121 = new TreeNode(-2); + TreeNode node = new TreeNode(1); + TreeNode node1 = new TreeNode(3); + TreeNode node2 = new TreeNode(11); + TreeNode node3 = new TreeNode(2); + TreeNode node4 = new TreeNode(3); + TreeNode node5 = new TreeNode(-3); + TreeNode node6 = new TreeNode(5); + TreeNode node7 = new TreeNode(10); + node7.left = node6; + node7.right = node5; + node6.left = node4; + node6.right = node3; + node5.right = node2; + node4.left = node1; + node4.right = node121; + node3.right = node11; + } +} + +