235. 二叉搜索树的最近公共祖先(二叉树)
2019-05-25 06:44
211 查看
给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。
百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”
例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,5]
示例 1:
输入: root = [6,2,8,0,4,7,9,null,null,3,5], p = 2, q = 8
输出: 6
解释: 节点 2 和节点 8 的最近公共祖先是 6。
示例 2:
输入: root = [6,2,8,0,4,7,9,null,null,3,5], p = 2, q = 4
输出: 2
解释: 节点 2 和节点 4 的最近公共祖先是 2, 因为根据定义最近公共祖先节点可以为节点本身。
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ class Solution { public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) { if(root==null||p==null||q==null){ return null; } return this.helper( root,p,q); } public TreeNode helper(TreeNode root, TreeNode p, TreeNode q){ if(root==null){ return null; } if(p.val<root.val&&q.val<root.val){ return helper( root.left,p,q); } else if(p.val>root.val&&q.val>root.val){ return helper( root.right,p,q); } else{ return root; } } }
相关文章推荐
- 找工作刷题记录_014二叉树&二叉搜索树最近的公共祖先
- 235. Lowest Common Ancestor of a Binary Search Tree (求二叉树中两个节点的最近公共祖先)
- [置顶] 二叉树(二叉搜索树)上的两节点的公共祖先节点(235和236)
- 235. 二叉搜索树的最近公共祖先
- 二叉树的最近公共祖先和二叉搜索树的最近公共祖先
- 程序员面试金典: 最近公共祖先、二叉树中和为某一值的路径
- 求解二叉树中两个节点的最近公共祖先(LCA)
- 二叉树中找两个结点的最近的公共祖先结点
- 在二叉树中找到两个节点的最近公共祖先
- 二叉树系列---在二叉树中找到两个节点的最近公共祖先
- 236. 二叉树的最近公共祖先
- 二叉树的LCA(最近公共祖先)算法
- 利用栈结构实现二叉树的非递归遍历,求二叉树深度、叶子节点数、两个结点的最近公共祖先及二叉树结点的最大距离
- 【算法面试题】寻找二叉搜索树中两个节点的最近公共祖先节点(转)
- 二叉树中的最近公共祖先问题
- 二叉树中两个节点的最近公共祖先节点
- 二叉树最近公共祖先
- 二叉搜索树(BST)的最近公共祖先(LCA)问题(Lowest Common Ancestor of a Binary Tree)
- 求二叉树中两个节点的最近公共祖先
- 二叉树最近公共祖先(LCA)