[LeetCode]Lowest Common Ancestor of a Binary Tree
2015-07-24 23:16
351 查看
解题思路:
肯定要搜索这颗树。我这里有两个searchTree方法;
1,当p和q都没有被找到时,调用 int searchTree(TreeNode *root, TreeNode* p, TreeNode* q, TreeNode* &LCA)
2,当p和q有一个 == 该node,则调用int searchTree(TreeNode *root, TreeNode* p)
3,返回值为1,该子树匹配到一个node,返回值为2,该子树已经找到了LCA,返回值为0,没收获
注意一点:判断两个node是否相等,用 root == q 不能用root->val == q->val ;因为val有重复
肯定要搜索这颗树。我这里有两个searchTree方法;
1,当p和q都没有被找到时,调用 int searchTree(TreeNode *root, TreeNode* p, TreeNode* q, TreeNode* &LCA)
2,当p和q有一个 == 该node,则调用int searchTree(TreeNode *root, TreeNode* p)
3,返回值为1,该子树匹配到一个node,返回值为2,该子树已经找到了LCA,返回值为0,没收获
注意一点:判断两个node是否相等,用 root == q 不能用root->val == q->val ;因为val有重复
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) { TreeNode *LCA = NULL; searchTree(root, p, q, LCA); return LCA; } int searchTree(TreeNode *root, TreeNode* p, TreeNode* q, TreeNode* &LCA){ if (root == NULL) return 0; int ret = 0; if (root == p){ ret ++; if (searchTree(root->left, q) || searchTree(root->right, q) ){ LCA = root; ret++; } }else if (root == q){ ret ++; if (searchTree(root->left, p) || searchTree(root->right, p)){ LCA = root; ret++; } }else{ int r = searchTree(root->left, p, q, LCA); if (r == 2) return r; int l = searchTree(root->right, p, q, LCA); if (l == 2) return l; ret = l+r; if (ret == 2){ LCA = root; } } return ret; } int searchTree(TreeNode *root, TreeNode* p){ if (root == NULL) return 0; if (root == p){ return 1; } return searchTree(root->left, p) || searchTree(root->right, p); } };
相关文章推荐
- hdu 1151 二分图最小路径覆盖
- ROS 学习系列 -- Roomba, Xtion Pro live 实现360度全景照片panorama 无法启动的解决方案
- 背单词App开发日记3
- Linux下进程的内存结构
- 多线程程序排错总结
- java的数据类型
- 程序员技术练级攻略(转)
- 开发-数据库-MongoDB初探
- 股票学习(技术指标)
- 为什么Java中的String设计成不可变的?
- 2015第30周五
- 4000 secureCRT传输文件
- 互动导航条
- 一起talk C栗子吧(第二十二回:C语言实例--队列一)
- 第三天学习笔记
- 数据库设计问题解决
- JavaSE----基础语法(方法)
- PS的简单使用
- sort函数与结构体体排序
- hdu 1023 卡特兰数