博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetCode(38):Lowest Common Ancestor of a Binary Search Tree
阅读量:5161 次
发布时间:2019-06-13

本文共 1586 字,大约阅读时间需要 5 分钟。

Given a binary search tree (BST), find the lowest common ancestor (LCA) of two given nodes in the BST.

According to the : “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.

/** * 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)			return NULL;		TreeNode* tmp = root;		while (tmp)		{			if (tmp == p || tmp == q)			{//假设相等。则返回该结点				if (tmp == p)					return p;				else					return q;			}			else if ((p->val > tmp->val && q->val < tmp->val) || 				(p->val < tmp->val && q->val > tmp->val))			{//假设一个大于当前结点。一个小于当前结点。则返回当前结点				return tmp;			}			else if (p->val < tmp->val && q->val < tmp->val)			{//假设同一时候小于当前结点,则两个结点都在左子树其中				tmp = tmp->left;			}			else if (p->val > tmp->val && q->val > tmp->val)			{//假设同一时候大于当前结点,则两个结点都在右子树其中
tmp = tmp->right;			}		}		return NULL;    }};

posted on
2017-06-21 21:03 阅读(
...) 评论(
...)

转载于:https://www.cnblogs.com/mthoutai/p/7061688.html

你可能感兴趣的文章
26、linux 几个C函数,nanosleep,lstat,unlink
查看>>
投标项目的脚本练习2
查看>>
201521123107 《Java程序设计》第9周学习总结
查看>>
Caroline--chochukmo
查看>>
iOS之文本属性Attributes的使用
查看>>
从.Net版本演变看String和StringBuilder性能之争
查看>>
Excel操作 Microsoft.Office.Interop.Excel.dll的使用
查看>>
解决Ubuntu下博通网卡驱动问题
查看>>
【bzoj2788】Festival
查看>>
执行gem install dryrun错误
查看>>
HTML5简单入门系列(四)
查看>>
实现字符串反转
查看>>
转载:《TypeScript 中文入门教程》 5、命名空间和模块
查看>>
苹果开发中常用英语单词
查看>>
[USACO 1.4.3]等差数列
查看>>
Shader Overview
查看>>
Reveal 配置与使用
查看>>
Java中反射的学习与理解(一)
查看>>
C语言初学 俩数相除问题
查看>>
B/S和C/S架构的区别
查看>>