zoukankan      html  css  js  c++  java
  • Java for LeetCode 236 Lowest Common Ancestor of a Binary Tree

    解题思路一:

    DFS到每个节点的路径,根据路径算出LCA:

    public class Solution {
    public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
    		if (root == p || root == q)
    			return root;
    		List pList = new ArrayList<TreeNode>(), qList = new ArrayList<TreeNode>();
    		getPath(root,p,pList);
    		getPath(root,q,qList);
    		for(int i=0;i<Math.min(pList.size(), qList.size());i++){
    			if(pList.get(i)!=qList.get(i))
    				return (TreeNode) pList.get(i-1);
    		}
    		return (TreeNode) pList.get(Math.min(pList.size(), qList.size())-1);
    	}
    
    	private boolean getPath(TreeNode root, TreeNode p, List<TreeNode> path) {
    		path.add(root);
    		if (root == p)
    			return true;
    		if (root.left != null) {
    			if (getPath(root.left, p, path))
    				return true;
    			path.remove(path.size() - 1);
    		}
    		if (root.right != null) {
    			if (getPath(root.right, p, path))
    				return true;
    			path.remove(path.size() - 1);
    		}
    		return false;
    	}
    }
    

    解题思路二:

    后续遍历+并查集(《数据结构》第11章内容),实现的时间空间,复杂度略高

    解题思路三:并查集+Tarjan算法

    参考:http://baike.baidu.com/link?url=oJBohljiyLYv4B0lFr5nbXOeYQ6B1PD4jAYAAZ0v2jKWR_ygiKyNFYqfIgWYbST0meiByvGTFNEjftX7vst90q#3_1

  • 相关阅读:
    SED{shell三剑客awk,sed,grep}
    AWK{shell三剑客awk,sed,grep}
    面试汇总
    shell脚本
    redis主从
    haproxy
    grafana
    zabbix
    lnmp
    shell 基础
  • 原文地址:https://www.cnblogs.com/tonyluis/p/4968906.html
Copyright © 2011-2022 走看看