Lowest Common Ancestor of a Binary Search Tree

来源:互联网 发布:dash windows版 编辑:程序博客网 时间:2024/06/02 04:15

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.

求二叉搜索树的最低公共祖先。

因为二叉数是按大小排列的,所以可以分为四种情况:

1.root比p大,比q小

1.root比p,q都大

2.root比p,q都小

4.root和p,q中的一个相同或两个都相同。

利用递归来解决问题。

public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {TreeNode node=root;if(node.val>p.val&&node.val<q.val)return node;else if(node.val>p.val&&node.val>q.val)return lowestCommonAncestor(node.left, p, q);else if(node.val<p.val&&node.val<q.val)return lowestCommonAncestor(node.right, p, q);return root;}



0 0
原创粉丝点击