235. Lowest Common Ancestor of a Binary Search Tree
2016-03-24 23:15
399 查看
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).”
For example, the lowest common ancestor (LCA) of nodes
Another example is LCA of nodes
since a node can be a descendant of itself according to the LCA definition.
题意:找到二叉搜索树两个结点的最近公共祖先节点。
思路:利用二叉搜索树的特点,如果root值在p值和q值之间,则root即为最近的公共祖先,否则根据root值与p值q值的关系向左子树找或向右子树找。
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
2and
8is
6.
Another example is LCA of nodes
2and
4is
2,
since a node can be a descendant of itself according to the LCA definition.
题意:找到二叉搜索树两个结点的最近公共祖先节点。
思路:利用二叉搜索树的特点,如果root值在p值和q值之间,则root即为最近的公共祖先,否则根据root值与p值q值的关系向左子树找或向右子树找。
/** * 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 (root == NULL) return root; int a, b; if (p->val < q->val){ a = p->val;//a is little b = q->val; } else{ a = q->val; b = p->val; } int c = root->val; if (c < a){ return lowestCommonAncestor(root->right, p, q); } else if (c == a) return root; else if (c > a){ if (c <= b) return root; else if (c > b) return lowestCommonAncestor(root->left, p, q); } } };
相关文章推荐
- 大家一起和snailren学java-(五)访问控制权限
- Bootstrap_分页
- 第三百五十六天 how can I 坚持
- 如何让程序在Nexus上全屏显示
- Fragment中调用父Activity的方法
- HDU 2035 人见人爱A^B (快速幂取模)
- Mysql建数据表
- <Win10开发>一些小知识。
- Bootstrap_导航条
- https通信加密过程
- static in java
- 欢迎使用CSDN-markdown编辑器
- Struts2中Action由自己与由Spring管理的区别
- Java笔试题
- Android基础——自定义EditTExt实现去掉输入框添加下划线
- XMEAG-128A1
- 游戏分析中的重要指标
- 简单广搜,迷宫问题(POJ3984)
- 10029---omcat8 访问 Host Manager时,role(角色)的授予
- 收藏的好文章