FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

leetcode 236 · feixiangcode/algorithm@fe3a996 · GitHub

Commit fe3a996

Browse files
committed
leetcode 236
1 parent 9447f45 commit fe3a996

1 file changed

Lines changed: 46 additions & 0 deletions

File tree

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
/**
2+
* Definition for a binary tree node.
3+
* public class TreeNode {
4+
* int val;
5+
* TreeNode left;
6+
* TreeNode right;
7+
* TreeNode(int x) { val = x; }
8+
* }
9+
*/
10+
class Solution {
11+
public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
12+
ArrayList<TreeNode> routes1 = new ArrayList();
13+
ArrayList<TreeNode> routes2 = new ArrayList();
14+
FindRoute(root, p.val, routes1);
15+
FindRoute(root, q.val, routes2);
16+
return Lca(routes1, routes2);
17+
}
18+
19+
public boolean FindRoute(TreeNode root, Integer p, List<TreeNode> routes) {
20+
if(root == null) return false;
21+
22+
routes.add(root);
23+
if(root.val == p) return true;
24+
25+
if(FindRoute(root.left, p, routes)) return true;
26+
if(FindRoute(root.right, p, routes)) return true;
27+
28+
routes.remove(root);
29+
return false;
30+
}
31+
32+
public TreeNode Lca(ArrayList<TreeNode> nodes1, ArrayList<TreeNode> nodes2) {
33+
int c = nodes1.size() > nodes2.size() ? nodes2.size() : nodes1.size();
34+
TreeNode last = null;
35+
for(int i=0;i<c;i++) {
36+
TreeNode a = nodes1.get(i);
37+
TreeNode b = nodes2.get(i);
38+
if(a == b) {
39+
last = a;
40+
} else {
41+
break;
42+
}
43+
}
44+
return last;
45+
}
46+
}

0 commit comments

Comments
 (0)

Back | FazBrowse Home | New Git URL