From 8fc3fadc94061b36380535cf6c9b51d43bec8754 Mon Sep 17 00:00:00 2001 From: linlihong <747682928@qq.com> Date: Tue, 3 Sep 2024 09:35:48 +0800 Subject: [PATCH] =?UTF-8?q?2024/9/2=20Hot100=20binaryTree=20=E6=98=A8?= =?UTF-8?q?=E6=97=A5=E5=85=AC=E5=85=B1=E8=8A=82=E7=82=B9=E7=AC=AC=E4=BA=8C?= =?UTF-8?q?=E7=A7=8D=E8=A7=A3=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/cool/hot100/binary_tree/Num236.java | 60 ++++++++++++------- 1 file changed, 38 insertions(+), 22 deletions(-) diff --git a/src/main/java/com/cool/hot100/binary_tree/Num236.java b/src/main/java/com/cool/hot100/binary_tree/Num236.java index 57b3143..206b009 100644 --- a/src/main/java/com/cool/hot100/binary_tree/Num236.java +++ b/src/main/java/com/cool/hot100/binary_tree/Num236.java @@ -12,35 +12,51 @@ import java.util.*; * Level ? */ public class Num236 { + // +// Map map = new HashMap<>(); +// LinkedList list = new LinkedList<>(); +// List> linkedLists = new ArrayList<>(); + private TreeNode res; - 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; +// 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; +// } +// } 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; + return this.res; } - 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); +// 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(); +// } + + private boolean dfs(TreeNode root, TreeNode p, TreeNode q) { + if (root == null) { + return false; } - dfs(root.left, p, q); - dfs(root.right, p, q); - list.pollLast(); + boolean left = dfs(root.left, p, q); + boolean right = dfs(root.right, p, q); + if ((left && right) || ((left || right) && (root.val == p.val || root.val == q.val))) { + this.res = root; + } + return root.val == p.val || root.val == q.val || left || right; + } }