leetcode 235 Lowest Common Ancestor oa a Binary Search Tree

題目要求:給定一個二叉查找樹中的兩個節點,找出它們最低的共同祖先。

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;
    	}
    }


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章