236. 二叉树的最近公共祖先

package leetcode;

import java.util.ArrayList;

public class demo_236 {
    boolean flag1=false;
    boolean flag2=false;
    public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
        ArrayList<TreeNode> l1=new ArrayList<TreeNode>();
        ArrayList<TreeNode> l2=new ArrayList<TreeNode>();
        trace(root, p, q, l1, l2);
        for(int i=l1.size()-1;i>=0;i--) {
            if(l2.contains(l1.get(i))) {
                return l1.get(i);
            }
        }
        return root;
    }
    public void trace(TreeNode root,TreeNode p,TreeNode q,ArrayList<TreeNode> l1,ArrayList<TreeNode> l2) {
        if(root!=null) {
            if(flag1==false) {
                l1.add(root);
            }
            if(flag2==false) {
                l2.add(root);
            }
            if(flag1==false&&root.val==p.val) {
                flag1=true;
            }
            if(flag2==false&&root.val==q.val) {
                flag2=true;
            }
            if(flag1==true&&flag2==true) {return;}
            trace(root.left, p, q, l1, l2);
            trace(root.right, p, q, l1, l2);
            if(flag1==false) {
                l1.remove(l1.size()-1);
            }
            if(flag2==false) {
                l2.remove(l2.size()-1);
            }
        }
    }
}

 

posted on 2022-04-08 15:03  一仟零一夜丶  阅读(23)  评论(0)    收藏  举报