题解 | #二叉搜索树的最近公共祖先#
二叉搜索树的最近公共祖先
https://www.nowcoder.com/practice/d9820119321945f588ed6a26f0a6991f
using System;
using System.Collections.Generic;
/*
public class TreeNode
{
public int val;
public TreeNode left;
public TreeNode right;
public TreeNode (int x)
{
val = x;
}
}
*/
class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param root TreeNode类
* @param p int整型
* @param q int整型
* @return int整型
*/
public int lowestCommonAncestor (TreeNode root, int p, int q) {
// write code here
List<int> pList = new List<int>();
List<int> qList = new List<int>();
TreeNode t1 = root;
while (t1.val != p) {
pList.Add(t1.val);
if (p < t1.val)
t1 = t1.left;
else
t1 = t1.right;
}
pList.Add(t1.val);
TreeNode t2 = root;
while (t2.val != q) {
qList.Add(t2.val);
if (q < t2.val)
t2 = t2.left;
else
t2 = t2.right;
}
qList.Add(t2.val);
if (pList.Count > qList.Count) {
for (int i = pList.Count - 1; i >= 0; --i) {
for (int j = qList.Count - 1; j >= 0; --j) {
if (pList[i] == qList[j])
return pList[i];
}
}
} else {
for (int i = qList.Count - 1; i >= 0; --i) {
for (int j = pList.Count - 1; j >= 0; --j) {
if (qList[i] == pList[j])
return pList[i];
}
}
}
return 0;
}
}
#二叉搜索树的最近公共祖先#
查看14道真题和解析