一颗普通的二叉树,如何寻找两个节点的最低公共祖先(发现的一个与算法无关的引用问题)
来源:互联网 发布:淘宝等级怎么看 编辑:程序博客网 时间:2024/06/06 01:35
算法很简单:先通过DFS深度优先遍历二叉树,找到两个节点的路径(从root开始),保存两个路径,然后比较两个路径中相同位置的节点是否是同一个节点。如果是最后一个相同的节点,那么就是最低公共祖先。
先上代码吧,/**
* 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) {
//首先前序遍历二叉树,得到从root到p,q的路径
vector<TreeNode*> rode1;
vector<TreeNode*> rode2;
FindPath(root, p, rode1);
FindPath(root, q, rode2);
TreeNode* result;
for(int i=0 ;i<min(rode1.size(),rode2.size());++i){
if(rode1[i]==rode2[i])
result = rode1[i];
}
return result;
}
bool FindPath(TreeNode*root, TreeNode* end, vector<TreeNode*> path)
{
if(root == NULL)
return false;
if(root== end)
{
path.push_back(root);
return true;
}
path.push_back(root);
bool found = false;
if(!found)
found = FindPath(root->left, end, path);
if(!found)
found = FindPath(root->right, end, path);
if(!found)
path.pop_back();
return found;
}
};
这是我最开始的代码,提交到leetcode的时候显示内存不够。最后发现问题出在标红的那一行,传递vetcor的时候传递用得是传值,最后会把整个vector复制一遍。当把vector改为传引用,即&path后accept.其实以前就知道如果传递大量数据作为形参的时候应该用引用&,但是还是在写代码的时候忘记了。
- 一颗普通的二叉树,如何寻找两个节点的最低公共祖先(发现的一个与算法无关的引用问题)
- 寻找二叉树两个节点的最低公共祖先(LCA)
- 寻找二叉树两个节点的最低公共祖先
- 寻找二叉树两个节点的最低公共祖先
- 寻找二叉树两个节点的最低公共祖先
- 寻找二叉树两个节点的最低公共祖先
- 【二叉树】寻找二叉树/BST的两个节点的最低公共祖先
- 二叉树中查找两个节点的最低公共祖先
- 求二叉树中两个节点的最低公共祖先
- 二叉树中两个节点的最低公共祖先
- 求二叉树中两个节点的最低公共祖先
- 算法:寻找树中两个结点的最低公共祖先
- 由浅入深:求给定两个树节点的最低公共祖先(二叉树、普通树结构)JAVA实现
- 给定一棵二叉树。求两个树节点的最低公共祖先
- 二叉树中寻找共同节点的最低公共祖先节点
- 求树中两个节点的最低公共祖先
- 二叉树问题——寻找二叉树中两个节点的最近公共祖先
- 求一棵普通树的两个结点的最低公共祖先
- Android Api Demos登顶之路(三十一)Alarm Controller
- jQuery_统计图插件-flot
- 黑马程序员------------------java基础--------------------集合
- C++ 简介
- VBA学习笔记
- 一颗普通的二叉树,如何寻找两个节点的最低公共祖先(发现的一个与算法无关的引用问题)
- 从员工到总监,你要明白的8个道理
- 机器人跳跃问题
- hdu 3746 Cyclic Nacklace KMP循环节问题
- SAS JAVA 连接操作
- 使用 Spring 3 MVC HttpMessageConverter 功能构建 RESTful web 服务(包括使用 RestTemplate 与 REST 服务进行通信)
- 苹果官方Instruments工具之Automation的介绍
- nginx http Access 模块指令
- [leetcode] Reverse Bits