LeetCode[236] Lowest Common Ancestor of a Binary Tree
来源:互联网 发布:淘宝二手单反相机 编辑:程序博客网 时间:2024/05/22 05:28
Given a binary tree, find the lowest common ancestor (LCA) of two given nodes in the tree.
According to the definition of LCA on Wikipedia: “The lowest common ancestor is defined between two nodes v and w as the lowest node in T that has both v and w as descendants (where we allow a node to be a descendant of itself).”
_______3______ / \ ___5__ ___1__ / \ / \ 6 _2 0 8 / \ 7 4
For example, the lowest common ancestor (LCA) of nodes 5
and 1
is 3
. Another example is LCA of nodes 5
and 4
is 5
, since a node can be a descendant of itself according to the LCA definition.
/** * 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) {stack<TreeNode*> stack1, stack2;bool result1 = FindPath(root, p, stack1);bool result2 = FindPath(root, q, stack2);TreeNode* ancestor = NULL;if (result1 && result2){while (!stack1.empty() && !stack2.empty()){if (stack1.top() == stack2.top()){ancestor = stack1.top();stack1.pop(), stack2.pop();}else break;}}return ancestor;}bool FindPath(TreeNode* root, TreeNode* node, stack<TreeNode*>& path){if (root == NULL)return false;if (root == node){path.push(root);return true;}bool result = false;if (!result)result = FindPath(root->left, node, path);if (!result)result = FindPath(root->right, node, path);if (result)path.push(root);return result;}};
0 0
- 【LeetCode】236 Lowest Common Ancestor of a Binary Tree
- leetcode 236: Lowest Common Ancestor of a Binary Tree
- Leetcode 236 Lowest Common Ancestor of a Binary Tree
- LeetCode 236 Lowest Common Ancestor of a Binary Tree
- [Leetcode 236, Medium] Lowest Common Ancestor of a Binary Tree
- leetcode[236]:Lowest Common Ancestor of a Binary Tree
- Leetcode NO.236 Lowest Common Ancestor of a Binary Tree
- Leetcode #236 Lowest Common Ancestor of a Binary Tree
- [leetcode 236]Lowest Common Ancestor of a Binary Tree
- LeetCode 236 Lowest Common Ancestor of a Binary Tree
- [LeetCode 236] Lowest Common Ancestor of a Binary Tree
- LeetCode(236)Lowest Common Ancestor of a Binary Tree
- leetcode 236: Lowest Common Ancestor of a Binary Tree
- LeetCode 236: Lowest Common Ancestor of a Binary Tree
- 【LEETCODE】236-Lowest Common Ancestor of a Binary Tree
- LeetCode 236 Lowest Common Ancestor of a Binary Tree
- 【LeetCode-236】Lowest Common Ancestor of a Binary Tree
- leetcode 236Lowest Common Ancestor of a Binary Tree [python]
- 面试题3
- service使用handler与Activity沟通的两种方法
- hdu5887 Herbs Gathering(搜索)
- Nginx之——Nginx+Keepalive 实现高可用负载均衡方案
- 努力工作努力生活,但别忘了你只是血肉之躯
- LeetCode[236] Lowest Common Ancestor of a Binary Tree
- codeforces-500【B思维】【C贪心】
- semanage命令的安装
- 数据结构笔记
- Android中常用的五种布局方式:FrameLayout
- bzoj3038(线段树开根)
- LeetCode----14. Longest Common Prefix
- 饿汉,懒汉,都是单身汉!---->简说单例模式里两个基友间的二三事
- Codeforces Round #372 (Div. 1) B. Complete The Graph 解题报告