(M)(Tree)Lowest Common Ancestor of a Binary Tree
来源:互联网 发布:类似prezi的软件 编辑:程序博客网 时间:2024/05/21 21:34
236. Lowest Common Ancestor of a Binary Tree
Given a binary tree, find the lowest common ancestor (LCA) of two given nodes in the tree.
According to the definition of LCA on Wikipedia: “The lowest common ancestor is defined between two nodes v and w as the lowest node in T that has both v and w as descendants (where we allow a node to be a descendant of itself).”
_______3______ / \ ___5__ ___1__ / \ / \ 6 _2 0 8 / \ 7 4
For example, the lowest common ancestor (LCA) of nodes 5
and 1
is 3
. Another example is LCA of nodes 5
and 4
is 5
, since a node can be a descendant of itself according to the LCA definition.
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */public class Solution { public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) { Map<TreeNode,TreeNode> map = new HashMap<TreeNode,TreeNode>(); map.put(root,null); find(map,root,p); find(map,root,q); List<TreeNode> list1 = new ArrayList<TreeNode>(); list1.add(p); List<TreeNode> list2 = new ArrayList<TreeNode>(); list2.add(q); TreeNode parent1 = map.get(p); while(parent1!=null) { list1.add(parent1); parent1 = map.get(parent1); } TreeNode parent2 = map.get(q); while(parent2!=null) { list2.add(parent2); parent2 = map.get(parent2); } for(int i=0;i<=list1.size();i++) { if(list2.contains(list1.get(i))) return list1.get(i); } return null; } public void find(Map<TreeNode,TreeNode> map,TreeNode root,TreeNode target) { if(root.val==target.val) return; if(root.left!=null) { map.put(root.left,root); find(map,root.left,target); } if(root.right!=null) { map.put(root.right,root); find(map,root.right,target); } }}
0 0
- (M)(Tree)Lowest Common Ancestor of a Binary Tree
- 236-m-Lowest Common Ancestor of a Binary Tree
- LeetCode:M-236. Lowest Common Ancestor of a Binary Tree
- Lowest Common Ancestor of a Binary Tree
- Lowest Common Ancestor of a Binary Tree
- Lowest Common Ancestor of a Binary Tree
- Lowest Common Ancestor of a Binary Tree
- Lowest Common Ancestor of a Binary Tree
- Lowest Common Ancestor of a Binary Tree
- Lowest Common Ancestor of a Binary Tree
- Lowest Common Ancestor of a Binary Tree
- Lowest Common Ancestor of a Binary Tree
- Lowest Common Ancestor of a Binary Tree(***)
- Lowest Common Ancestor of a Binary Tree
- Lowest Common Ancestor of a Binary Tree
- Lowest Common Ancestor of a Binary Tree
- Lowest Common Ancestor of a Binary Tree
- Lowest Common Ancestor of a Binary Tree
- 超级简单的选择排序
- 技能树 DP
- matlab利用fzero求零点
- 彻底修改eclipse的默认编码
- windows查看端口占用以及关闭相应的进程
- (M)(Tree)Lowest Common Ancestor of a Binary Tree
- hdu 5969 最大的位或 ccpc 2016 合肥站
- 学习Hadoop第三十二课(hive练习--多表联合查询)
- 网络层协议
- 编写可靠shell脚本的八个建议
- automaticallyAdjustsScrollViewInsets 和edgesForExtendedLayoutse和translucent
- android graphic(10)—activity申请surface流程
- 解决Android sdk无法下载的问题
- MySQL的基本用法和常用命令