题目:
给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。
思路:
二叉树一般会用到递归或遍历。结合此题,由于该树是二叉搜索树,最近公共祖先节点的特点即其节点的值大于
等于p(左边)节点的值,小于等于q(右边)节点的值。由此可以写出递归或者循环代码。
代码:
1.递归:
1 | public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) { |
2.循环:
1 | public TreeNode lowestCommonAncestor1(TreeNode root, TreeNode p, TreeNode q) { |
复杂度分析及总结:
1.递归:
时间复杂度:
O(n)。
空间复杂度:
O(n)。
2.循环:
时间复杂度:
O(n)。
空间复杂度:
O(1)。