LeetCode (236):Lowest Common Ancestor of a Binary Search Tree

來源:互聯網
上載者:User

標籤:

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與節點b的公用祖先c一定滿足:a與b分別出現在c的左右子樹上(如果a或者b本身不是祖先的話)。

Java代碼:

class TreeNode {     int val;     TreeNode left;     TreeNode right;     TreeNode(int x) { val = x; } }public class Solution {     public static TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {         if(root==null) return null;         if(root==p||root==q) return root;         TreeNode L=lowestCommonAncestor(root.left,p,q);         TreeNode R=lowestCommonAncestor(root.right,p,q);         if(L!=null&&R!=null) return root;        return L!=null?L:R;        }//test    public static void main(String[] args) {        // TODO Auto-generated method stub        TreeNode tr=new TreeNode(1);        TreeNode nodeB=new TreeNode(2);        TreeNode nodeC=new TreeNode(3);        TreeNode nodeD=new TreeNode(4);        TreeNode nodeE=new TreeNode(5);        tr.left=nodeB;        tr.right=nodeC;        tr.left.right=nodeD;            tr.left.left=nodeE;            System.out.print(lowestCommonAncestor(tr, nodeC, nodeE).val);    }}

 

LeetCode (236):Lowest Common Ancestor of a Binary Search Tree

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.