235. Lowest Common Ancestor of a Binary Search Tree&&236. Lowest Common Ancestor of a Binary Tree
2016-05-17 14:48
309 查看
并不想赘述题……直接记代码。
235是一个二叉搜索树,那么很明显可以利用的条件就是左边小,右边大。我用的是递归。需要注意的是二叉树要记得考虑NULL的特殊情况。
236是一个单纯的二叉树,依然可以用递归的方式来解决。
所以这个坑日后再补……
235是一个二叉搜索树,那么很明显可以利用的条件就是左边小,右边大。我用的是递归。需要注意的是二叉树要记得考虑NULL的特殊情况。
class Solution { public: TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) { if(p==NULL||q==NULL||root==NULL) return NULL;//哎呀这次又忘记考虑特殊情况了啊 if(p->val>root->val&&q->val>root->val) return lowestCommonAncestor(root->right,p,q); if(p->val<root->val&&q->val<root->val) return lowestCommonAncestor(root->left,p,q); return root; } };
236是一个单纯的二叉树,依然可以用递归的方式来解决。
class Solution { public: TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) { if(root == NULL || root == p || root == q) return root; //查看左子树中是否有目标结点,没有为null TreeNode* left = lowestCommonAncestor(root->left, p, q); //查看右子树是否有目标节点,没有为null TreeNode* right = lowestCommonAncestor(root->right, p, q); //都不为空,说明做右子树都有目标结点,则公共祖先就是本身 if(left!=NULL&&right!=NULL) return root; //如果发现了目标节点,则继续向上标记为该目标节点 return left == NULL ? right : left; } };这两道题都有另一种非递归的方式来解决,然而我试了一下每次都WA……也搞不清楚leetcode的输入到底是先序中序还是后序,分析不出来哪里有问题……
所以这个坑日后再补……
相关文章推荐
- Hibernate组件映射
- 架构漫谈(九):理清技术、业务和架构的关系
- I/O 重定向
- iOS多线程编程技术之NSThread、Cocoa NSOperation、GCD
- 代码讲解Android Scroller、VelocityTracker
- wordpress里控制摘要格式
- Masonry框架使用示例(转载)
- inheritprototype原型继承封装及综合继承最简实例
- .xsession-errors:openConnection: connect: No such file or directory cannot connect to brltty at :0
- Matlab和外部文件进行数据交换相关的命令
- Visual Studio调试服务端程序:w3wp进程消失 解决办法
- 请求消息体和响应消息体
- 封装
- Visual Studio调试服务端程序:w3wp进程消失 解决办法
- 深入理解Java:SimpleDateFormat安全的时间格式化
- angularJs中关于ng-class的三种使用方式说明
- phpstorm添加laravle语法支持
- 动态布局--动态修改RelativeLayout宽高的方法
- html代码变成文本显示在页面上
- js数组转json