博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Lowest Common Ancestor II
阅读量:5917 次
发布时间:2019-06-19

本文共 1512 字,大约阅读时间需要 5 分钟。

Note

这道题和一不同,给了一个Node向上回溯的可能,所以不需要recersive的找。因为之前的那个题不能回头,所以必须先到最下面(或者找的A和B)。这道题我们只需要把A和B的path记住就可以了,然后比较path中从root到A或者B,一直到开始不一样的时候停止,那个最后一个一样的就是LCA。

/** * Definition of ParentTreeNode: *  * class ParentTreeNode { *     public ParentTreeNode parent, left, right; * } */public class Solution {    /**     * @param root: The root of the tree     * @param A, B: Two node in the tree     * @return: The lowest common ancestor of A and B     */    public ParentTreeNode lowestCommonAncestorII(ParentTreeNode root,                                                 ParentTreeNode A,                                                 ParentTreeNode B) {        // Write your code here        List
pathA = findPath2Root(A); List
pathB = findPath2Root(B); int indexA = pathA.size() - 1; int indexB = pathB.size() - 1; ParentTreeNode rst = null; while (indexA >= 0 && indexB >= 0) { if (pathA.get(indexA) != pathB.get(indexB)) { break; } rst = pathA.get(indexA); indexA--; indexB--; } return rst; } private List
findPath2Root(ParentTreeNode node) { List
path = new ArrayList
(); while (node != null) { path.add(node); node = node.parent; } return path; } }

 

转载于:https://www.cnblogs.com/codingEskimo/p/6950626.html

你可能感兴趣的文章
7月第3周邮件通信网站综合排行Top10:163居首
查看>>
Objective-C 对字符串数组排序
查看>>
3月上旬.wang域名总量15强:易名西数共净增42.5万
查看>>
我的友情链接
查看>>
显示桌面图标不见了如何恢复
查看>>
我看传统企业如何立足互联网
查看>>
db2 import数据导入的skipcount参数使用方法
查看>>
让SourceTree也能Export文件
查看>>
自己测试的c3p0的代码demo
查看>>
实用SQL语句大全
查看>>
linux系统修改系统时间与时区
查看>>
PySide集成开发环境下载安装配置
查看>>
解决CentOS php执行curl DNS解析慢
查看>>
8,mysql存储过程和存储函数
查看>>
samba共享线上实测
查看>>
Git常用命令查询 ;
查看>>
提高代码质量:如何编写函数
查看>>
linux的安装RPM包或者安装源码包
查看>>
iOS 9适配技巧(更新版)
查看>>
rpm包制作
查看>>