235. Lowest Common Ancestor of a Binary Search Tree
2016-04-04 13:51
302 查看
/** * 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) { //主要分为几种情况 //1 如果p或者q有一个直接与root相等,则直接返回root即可 //2 如果p q都不等于root,则进行下一步判断,如果都在左子树当中,则堆左子树进行递归 //3 如果都在右子树当中,则对右子树进行递归 //4 如果一个在左子树,一个在右子树当中,则当前root就是结果,直接返回即可。 TreeNode temp=root; if(root==p||root==q) { return temp; } else { if(isIn(temp.left,p)&&isIn(temp.left,q)) { return lowestCommonAncestor(temp.left,p,q); } else if(isIn(temp.right,p)&&isIn(temp.right,q)) { return lowestCommonAncestor(temp.right,p,q); } else return temp; } } public boolean isIn(TreeNode root,TreeNode target) { boolean res=false; if(target==root) return true; else { if(root.left!=null) res=isIn(root.left,target); if(root.right!=null&&res==false) res=isIn(root.right,target); } return res; } }
相关文章推荐
- 黑帽技术联盟:黑帽SEO与白帽SEO之争
- HDU 1394 Minimum Inversion Number (树状数组求逆序对)
- C/C++—— 在构造函数中调用虚函数能实现多态吗(Vptr指针初始化的过程分析)
- ThreadLocal管理下的Session
- Android中layout_gravity和gravity的区别
- 计算机基础(1)-原码、反码、补码
- AB压力测试工具
- lintcode-medium-Permutations
- Ubuntu下图形界面SVN客户端-RabbitVCS的安装
- poj 3084 最小割
- AndroidEventBus源码分析
- CentOS7从ELRepo源中安装Nvidia显卡驱动
- Android Gradle Plugin指南(二)——基本项目
- 学习笔记 第六周 第二篇
- java虚拟机学习之内存管理
- NYOJ 12 喷水装置(二)
- JDK7 提供了 7 个阻塞队列
- Android开发环境搭建
- wav文件格式分析详解
- SimpleDateFormat 的 format 方法使用具体解释