给定一棵二叉树。求两个树节点的最低公共祖先
来源:互联网 发布:百舌鸟导弹 知乎 编辑:程序博客网 时间:2024/06/03 22:57
本题源自leetcode。https://leetcode.com/problems/lowest-common-ancestor-of-a-binary-tree/description/
----------------------------------------------
代码: 递归
TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) { if(!root || root == p || root == q) return root; TreeNode* left=lowestCommonAncestor(root->left,p,q); TreeNode* right=lowestCommonAncestor(root->right,p,q); if(left==NULL) return right; if(right==NULL) return left; return root; }
非递归:
TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) { vector<TreeNode*> left; vector<TreeNode*> right; TreeNode* node=root; TreeNode* res=NULL; while(node){ //遍历左子树 if(node == p || node == q){ if(res == NULL) res = node; else return res; } left.push_back(node); node = node->left; } while(left.size()){ TreeNode* node = left.back(); if(node->right == NULL){ //如果没有右子树,就向上遍历 left.pop_back(); if(node->left && node->left == res) res = node; continue; } if(right.size() && node == right.back()){ //返回父节点 left.pop_back(); right.pop_back(); if(res && (node->left == res || node->right == res)) res = node; continue; } if(res && (node->left == res || node->right == res)) //公共节点 上移 res = node; right.push_back(node); node = node->right; //遍历右子树 while(node){ if(node == p || node == q){ if(res) return res; else res = node; } left.push_back(node); node=node->left; } } return NULL; }
阅读全文
0 0
- 给定一棵二叉树。求两个树节点的最低公共祖先
- 求二叉树中两个节点的最低公共祖先
- 求二叉树中两个节点的最低公共祖先
- 由浅入深:求给定两个树节点的最低公共祖先(二叉树、普通树结构)JAVA实现
- 树---求给定二叉树中两节点的最低公共祖先(LCA)
- 求二叉树的两个节点的最低公共祖先节点
- 求二叉树中两个节点p,q的最低公共祖先节点
- 求二叉树中两个节点的最低公共祖先节点
- 求二叉树中两个节点的最低公共祖先节点
- 二叉树中查找两个节点的最低公共祖先
- 寻找二叉树两个节点的最低公共祖先(LCA)
- 寻找二叉树两个节点的最低公共祖先
- 寻找二叉树两个节点的最低公共祖先
- 寻找二叉树两个节点的最低公共祖先
- 二叉树中两个节点的最低公共祖先
- 寻找二叉树两个节点的最低公共祖先
- 求二叉树中两个节点的最近公共祖先
- 求二叉树中两个节点的最近公共祖先
- c# ArrayList
- 软件工程五种典型的开发模型各自特点
- Qt获取本机的IP地址、用户名等相关信息
- 加密解密,数字签名及证书
- AndroidStudio(3.x版本)的输入法之坑
- 给定一棵二叉树。求两个树节点的最低公共祖先
- 更改单选按钮的选项值来改变调查内容
- 爬了知乎200万数据,图说程序员都喜欢去哪儿工作~
- 荐书丨逆流而上:阿里巴巴技术成长之路
- 纪念一下终于搞出来的PyTorch的Multi-GPU使用代码
- TensorFlow学习笔记3:线性回归
- 网络基础概念以相关技术
- Balancing Act (树形dp 求树的重心板题)
- 404观点丨找一个喜欢程序员的女(男)朋友难,还是找一个程序员做女(男)朋友难?