博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LintCode-88.最近公共祖先
阅读量:4986 次
发布时间:2019-06-12

本文共 1689 字,大约阅读时间需要 5 分钟。

给定一棵二叉树,找到两个节点的最近公共父节点(LCA)。

最近公共祖先是两个节点的公共的祖先节点且具有最大深度。

注意事项

假设给出的两个节点都在树中存在

样例

对于下面这棵二叉树

901252-20170504170050507-624727971.png
LCA(3, 5) = 4
LCA(5, 6) = 7
LCA(6, 7) = 7

标签

LintCode 版权所有 领英 二叉树 脸书

code

/** * Definition of TreeNode: * class TreeNode { * public: *     int val; *     TreeNode *left, *right; *     TreeNode(int val) { *         this->val = val; *         this->left = this->right = NULL; *     } * } */class Solution {public:    /**     * @param root: The root of the binary search tree.     * @param A and B: two nodes in a Binary.     * @return: Return the least common ancestor(LCA) of the two nodes.     */    TreeNode *lowestCommonAncestor(TreeNode *root, TreeNode *A, TreeNode *B) {        // write your code here        TreeNode * ancestor = NULL;        if(root==NULL || A==NULL || B==NULL)            return ancestor;        vector
pathA, pathB; searchTree(root, A, pathA); searchTree(root, B, pathB); int sizeA=pathA.size(), sizeB=pathB.size(); int size = sizeA>sizeB ? sizeB : sizeA, i=0; bool find = false; for(i=0; i
&path) { if(root==NULL || node==NULL) { return false; } path.push_back(root); // 找到了 if(root->val == node->val) { return true; } if(root->left != NULL) { if(searchTree(root->left, node, path)) { return true; } } if(root->right != NULL) { if(searchTree(root->right, node, path)) { return true; } } //回溯 path.pop_back(); return false; }};

转载于:https://www.cnblogs.com/libaoquan/p/6808137.html

你可能感兴趣的文章
.Net_05_事务的基本语法(Sql 语句)
查看>>
c++ 获取某个进程个数
查看>>
SparkSQL相关语句总结
查看>>
[洛谷P1514]引水入城
查看>>
[NC189A]数字权重
查看>>
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
查看>>
VS2015和OpenCV配置
查看>>
PHP_D4_“简易聊天室 ”的具体技术实现
查看>>
[BAT]通过schtasks.exe远程调用windows 2008 server上的计划任务,提示ERROR : Access is denied...
查看>>
关于实习的一些问题
查看>>
Mybatis Insert、update、delete流程
查看>>
NameValueCollection与Hashtable的区别
查看>>
DevExpress XtraReports 入门三 创建 Master-Detail(主/从) 报表
查看>>
Json对象的深浅拷贝
查看>>
HDOJ-1013
查看>>
A. Bus to Udayland
查看>>
Python 基础篇:字典、集合、文件操作
查看>>
Jmail发送邮件与带附件乱码解决办法
查看>>
分治法求一个N个元素数组的逆序数
查看>>
P4149 [IOI2011]Race
查看>>