Leetcode: Lowest Common Ancestor of a Binary Tree
2015-12-20 08:08
337 查看
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.
Recursion
/** * 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) { if (root==null || p==null || q==null) return null; if (root==p || root==q) return root; TreeNode left = lowestCommonAncestor(root.left, p, q); TreeNode right = lowestCommonAncestor(root.right, p, q); if (left!=null && right==null) return left; if (left==null && right!=null) return right; if (left!=null && right!=null) return root; //found LCA else return null; } }
相关文章推荐
- Android - 设置ImageView为全屏显示
- Android应用开发基本流程及测试运行
- Leetcode: Lowest Common Ancestor of a Binary Search Tree
- 思想上移,行动下移——抽象工厂+反射+配置文件
- 【机房收费系统】数据库设计
- 支持向量机(SVM)非线性数据切割
- QQ音乐API
- bzoj3517 翻硬币 数学
- LeetCode - Remove Nth Node From End of List
- 【Beta阶段】第八次Scrum Meeting!
- error: 'for' loop initial declarations are only allowed in C99 mode
- sameersbn/gitlab6.9.2实战
- UVAlive2531 The K-League(最大流)
- 向操蛋的行规说NO!
- 2016太原网络营销师郭文军讲解如何运营自媒体下的【百度贴吧】
- 完全纯净!你的最佳PE工具箱-微PE
- C语言递归调用2:猜数小游戏
- Leetcode: Palindrome Linked List
- LeetCode - 4Sum
- VS 2008 也能玩转 Node.JS!