import java.util.LinkedList;
import java.util.List;
/**
* Created by dikongfeixing on 16/8/10.
*/
public class LowestCommonAncestorofaBinaryTree_236 {
public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
if(p==null||q==null||root==null){return root;}
LinkedList<TreeNode> re_p=new LinkedList<TreeNode>() ;
LinkedList<TreeNode> re_q=new LinkedList<TreeNode>() ;
sub(root,q,re_q);
sub(root,p,re_p);
int i=0;
System.out.println(re_q);
System.out.println(re_p);
int result=0;
while(i<re_p.size()&&i<re_q.size()){
int temp_p=re_p.get(i).val;
int temp_q=re_q.get(i).val;
if(temp_p==temp_q){result=i;i++;}
else {break;}
}
System.out.print(result);
return re_p.get(result);
}
public boolean sub(TreeNode root,TreeNode p,List<TreeNode> list){
if(root==p) {
list.add(root);
return true;
}
list.add(root);
boolean found=false;
if(root.left!=null)
found=sub(root.left,p,list);
if(!found&&root.right!=null)
found=sub(root.right,p,list);
if(!found){
list.remove(list.size()-1);
}
return found;
}
}
树的最低公共祖先
最新推荐文章于 2020-09-19 13:46:28 发布