题解 | #在二叉树中找到两个节点的最近公共祖先#

在二叉树中找到两个节点的最近公共祖先

https://www.nowcoder.com/practice/e0cc33a83afe4530bcec46eba3325116

import java.util.*;

/*
 * public class TreeNode {
 *   int val = 0;
 *   TreeNode left = null;
 *   TreeNode right = null;
 *   public TreeNode(int val) {
 *     this.val = val;
 *   }
 * }
 */

public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param root TreeNode类 
     * @param o1 int整型 
     * @param o2 int整型 
     * @return int整型
     */
    public int lowestCommonAncestor (TreeNode root, int o1, int o2) {
        // write code here
        Deque<Integer> p1=new LinkedList<>();
        Deque<Integer> p2=new LinkedList<>();
        searcherPath(root,o1,p1);
        //System.out.println("don1="+p1);
        searcherPath(root,o2,p2);
        int res=-1;
        //System.out.println(p1);
       // System.out.println(p2);
        while(!p1.isEmpty()&&!p2.isEmpty()){
            int v1=p1.poll();
            int v2=p2.poll();
            //System.out.println("v1="+v1);
            //System.out.println("v2="+v2);
            if(v1==v2){
                res=v1;
            }
            else{
                break;
            }
        }
    

        return res;
    }

    boolean searcherPath(TreeNode root,int val,Deque<Integer> path){

        if(root==null){
            //System.out.println("null");
            return false;}
        if(root.val==val){
            path.add(root.val);
            System.out.println("found!"+root.val+"path="+path);
            return true;
        }
        else{
           // System.out.println("val="+root.val);
            path.add(root.val);
            //System.out.println(path);
            if(searcherPath(root.left,val,path)){
                return true;
            }
            else if(searcherPath(root.right,val,path)){
                return true;
             }
            else{
                path.removeLast();
                return false;
            }
        }
    }
}

全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务