1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
| class Solution { public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) { ArrayList<TreeNode> listP = new ArrayList<>(); ArrayList<TreeNode> listQ = new ArrayList<>(); findNode(root, p, listP); findNode(root, q, listQ);
for(int i = listP.size() -1; i >=0; i--){ if(listQ.contains(listP.get(i))){ return listP.get(i); } } return null; }
public boolean findNode(TreeNode root, TreeNode target, ArrayList<TreeNode> list){
if(root == null){ return false; }
if (!list.contains(target)){ list.add(root); }
if(list.contains(target)){ return true; }
if(!findNode(root.left, target, list)){ list.remove(root.left); }else { return true; }
if(!findNode(root.right, target, list)){ list.remove(root.right); }else { return true; }
return false; } }
|