leetcode 235 Lowest Common Ancestor oa a Binary Search Tree

来源:互联网 发布:提高数据分析能力 编辑:程序博客网 时间:2024/04/30 17:41

题目要求:给定一个二叉查找树中的两个节点,找出它们最低的共同祖先。

tags:tree,recursive

思路:

首先说说二叉查找树的特性:

1.比根节点小的节点都在左子树上,

2.比根节点大的节点都在右子树上,

3.查找树种没有两个相同的值。

非二叉查找树:

查找时需要记录查找路径,不然无法进行查找。(遍历)

做法:找到第一个值,使其可以大于等于左节点并小于等于右节点。

即,当根节点值大于左右节点时,它的最低共同祖先在根节点的左孩子上;当根节点小于左右结点时,最低共同祖先在根节点的右孩子上。

public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {    if(root==null || p==null || q ==null){    return null;    }else if(Math.max(p.val,q.val)<root.val){    return lowestCommonAncestor(root.left,p,q);    }else if(Math.min(p.val,q.val)>root.val){    return lowestCommonAncestor(root.right,p,q);    }else{    return root;    }    }


0 0
原创粉丝点击