[leetcode] 235. Lowest Common Ancestor of a Binary Search Tree
来源:互联网 发布:微信cms是啥 编辑:程序博客网 时间:2024/06/08 04:36
Question :
Given a binary search tree (BST), find the lowest common ancestor (LCA) of two given nodes in the BST.
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).”
_______6______ / \ ___2__ ___8__ / \ / \ 0 _4 7 9 / \ 3 5
For example, the lowest common ancestor (LCA) of nodes 2 and 8 is 6. Another example is LCA of nodes 2 and 4 is 2, since a node can be a descendant of itself according to the LCA definition.
Solution :
因为是BST,因此要找LCA就简单很多,从结果反过来看,如果一个节点是p和q的LCA,那么这个节点就会比p大或相等且比q小或相等,或者反过来,而如果pq都比当前节点大,则说明满足前一句话的节点会在当前节点的右子树中,否则就在左子树中。
总而言之,判断p和q是否位于root的两端,是则为LCA,否则通过BST的特性确定p和q在左子树或右子树,然后递归找到LCA。
/** * 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) { if ((p->val >= root->val && q->val <= root->val) || (p->val <= root->val && q->val >= root->val)) return root; if (p->val >= root->val && q->val >= root->val) return lowestCommonAncestor(root->right, p, q); return lowestCommonAncestor(root->left, p, q); }};
- LeetCode 235. Lowest Common Ancestor of a Binary Search Tree
- [leetcode] 235.Lowest Common Ancestor of a Binary Search Tree
- [LeetCode]235.Lowest Common Ancestor of a Binary Search Tree
- 【LeetCode】235. Lowest Common Ancestor of a Binary Search Tree
- 235. Lowest Common Ancestor of a Binary Search Tree LeetCode
- LeetCode 235. Lowest Common Ancestor of a Binary Search Tree
- [LeetCode]235. Lowest Common Ancestor of a Binary Search Tree
- [LeetCode]235. Lowest Common Ancestor of a Binary Search Tree
- LeetCode 235. Lowest Common Ancestor of a Binary Search Tree
- [leetcode] 235. Lowest Common Ancestor of a Binary Search Tree
- 【LeetCode】235. Lowest Common Ancestor of a Binary Search Tree
- leetcode:235. Lowest Common Ancestor of a Binary Search Tree
- LeetCode *** 235. Lowest Common Ancestor of a Binary Search Tree
- LeetCode-235.Lowest Common Ancestor of a Binary Search Tree
- LeetCode 235. Lowest Common Ancestor of a Binary Search Tree
- leetcode-235. Lowest Common Ancestor of a Binary Search Tree
- 235.[Leetcode]Lowest Common Ancestor of a Binary Search Tree
- 【leetcode】235. Lowest Common Ancestor of a Binary Search Tree
- matlab调试
- maven项目启动显示jconsole和tool.jar错误
- LeetCode 313. Super Ugly Number
- Java后台框架篇--Spring单元测试中的H2数据库
- 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
- [leetcode] 235. Lowest Common Ancestor of a Binary Search Tree
- RaspberryPi树莓派安装中文输入法Fcitx
- 在PHPStrom中配置PHPunit
- linux下的僵尸进程处理SIGCHLD信号
- Win10 如何以管理员身份设置开机自启程序(2)
- 根据传入的值x的不同,返回对应的y值
- 11.leetCode338: Counting Bits
- ubuntu samba出错问题排查
- <安彦>Linux的基础命令