leetcode(66).235. Lowest Common Ancestor of a Binary Search Tree

来源:互联网 发布:kinetic.js 编辑:程序博客网 时间:2024/06/03 07:18
题意:

给一个二叉查找树,和两个树中的结点,找出这两个结点最近(最低层次)的祖先。

初步分析:正在想间,突然想起来,这是二叉查找树,意味结点大小有规律。所以,它们的祖先的值一定在他们的值之间,而且一个结点的值在它们之间,这个结点就是它们的祖先。所以“这个结点”应该动态的向下遍历。

代码:

/** * 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)            return null;        else if((root.val>=q.val&&p.val>=root.val)||(root.val>=p.val&&q.val>=root.val))  //这就是祖先            return root;        else if(q.val<root.val &&p.val<root.val)            return lowestCommonAncestor(root.left, p ,q);        else //if(q.val>root.val &&p.val>root.val)            return lowestCommonAncestor(root.right, p, q);    }}



0 0
原创粉丝点击