72【leetcode】经典算法- Lowest Common Ancestor of a Binary Search Tree(lct of bst)
2016-07-30 11:09
615 查看
题目描述:
一个二叉搜索树,给定两个节点a,b,求最小的公共祖先
_______6______ / \ ___2__ ___8__ / \ / \ 0 _4 7 9 / \ 3 5
例如:
2,8 —->6 2,4—–>2原文描述:
Given a binary search tree (BST), find the lowest common ancestor (LCA) of two given nodes in the BST.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).”
_______6______ / \ ___2__ ___8__ / \ / \ 0 _4 7 9 / \ 3 5
For example, the lowest common ancestor (LCA) of nodes 2 and 8 is 6. Another example is LCA of nodes 2 and 4 is 2, since a node can be a descendant of itself according to the LCA definition.
思路分析:
二叉树考虑递归的思路
如果a < = root <= b,可以确定root是lct
采用二分搜索的方式递归,root > a,b,继续遍历左子树,反之右边的子树
-在递归的开始判断空值的情况,直接返回root
代码:
/** * 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 root; if(p.val > root.val && q.val > root.val) return lowestCommonAncestor(root.right, p, q); else if(p.val < root.val && q.val < root.val) return lowestCommonAncestor(root.left, p, q); else return root; } }
更多的leetcode的经典算法,查看我的leetcode专栏,链接如下:
leetcode专栏我的微信二维码如下,欢迎交流讨论
欢迎关注《IT面试题汇总》微信订阅号。每天推送经典面试题和面试心得技巧,都是干货!
微信订阅号二维码如下:
相关文章推荐
- 72【leetcode】经典算法- Lowest Common Ancestor of a Binary Search Tree(lct of bst)
- 72【leetcode】经典算法- Lowest Common Ancestor of a Binary Search Tree(lct of bst)
- 72【leetcode】经典算法- Lowest Common Ancestor of a Binary Search Tree(lct of bst)
- 72【leetcode】经典算法- Lowest Common Ancestor of a Binary Search Tree(lct of bst)
- LeetCode:Lowest Common Ancestor of a Binary Search Tree(BST最近公共祖先)
- LeetCode Lowest Common Ancestor of a Binary Search Tree 刷题 OJ 算法
- leetcode 235. Lowest Common Ancestor of a Binary Search Tree 二叉搜索树BST的最近公共祖先LCA + 深度优先遍历DFS
- leetcode 日经贴,Cpp code -Lowest Common Ancestor of a Binary Search Tree
- LeetCode Lowest Common Ancestor of a Binary Search Tree
- [Leetcode 235, Easy] Lowest Common Ancestor of a Binary Search Tree
- leetcode 235: Lowest Common Ancestor of a Binary Search Tree
- Lowest Common Ancestor of Binary Search Tree (BST)
- leetcode 235 Lowest Common Ancestor of a Binary Search Tree
- LeetCode Lowest Common Ancestor of a Binary Search Tree (LCA最近公共祖先)
- 【LeetCode 235】Lowest Common Ancestor of a Binary Search Tree
- Leetcode 235 Lowest Common Ancestor of a Binary Search Tree
- leetCode(38):Lowest Common Ancestor of a Binary Search Tree
- LeetCode 235. Lowest Common Ancestor of a Binary Search Tree
- [LeetCode] Lowest Common Ancestor of a Binary Search Tree 二叉搜索树的最小共同父节点
- leetcode-235-Lowest Common Ancestor of a Binary Search Tree