136 二叉树的最近公共祖先

发布时间:2024年01月21日

问题描述:给定一个二叉树,找到该树中两个指定节点的最近公共祖先。

求解思路:保存从根节点到两个节点的两个路径(使用链表),再对两个链表进行比较,最后一个相同的节点也就是最近的公共祖先。

public void findCloseAncester(TreeNode root,List<TreeNode>list,List<List<TreeNode>>res,TreeNode p,TreeNode q)
{
if(root==null){return;}
if(root==p||root==q){list.add(root);res.add(list);return;}
list.add(root);
findCloseAncester(root.left,list,res,p,q);
findCloseAncester(root.right,new List<TreeNode>(list),p,q);
}
public TreeNode?FindCloseAncester(TreeNode root)
{
List<List<TreeNode>>res;
findCloseAncester(root,newLinkedList<TreeNode>(),res,p,q);
TreeNode pre=res.get(0).get(0);
for(int i=1;i<res.get(0).size();i++)
{
if(res.get(0).get(i)!=res.get(1).get(i)){break;}
pre=res.get(0).get(i);
}
???????return pre;
}

文章来源:https://blog.csdn.net/qq_52299902/article/details/135734861
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。