[Swift]LeetCode235. 二叉搜索树的最近公共祖先 | Lowest Common
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 p and q?as the lowest node in T that has both p and q?as descendants (where we allow?a node to be a descendant of itself).” Given binary search tree:? root =?[6,2,8,4,7,9,null,3,5] ? Example 1: Input: root = [6,5],p = 2,q = 8 Output: 6 Explanation: The LCA of nodes and is . 286 Example 2: Input: root = [6,q = 4 Output: 2 Explanation: The LCA of nodes and is,since a node can be a descendant of itself according to the LCA definition. 242 ? Note:
给定一个二叉搜索树,找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。” 例如,给定如下二叉搜索树:? root =?[6,5] ? 示例 1: 输入: root = [6,q = 8 输出: 6 解释: 节点 和节点 的最近公共祖先是 286。 示例 2: 输入: root = [6,q = 4 输出: 2 解释: 节点 和节点 的最近公共祖先是,因为根据定义最近公共祖先节点可以为节点本身。242 ? 说明:
递归 1 /** 2 * Definition for a binary tree node. 3 * public class TreeNode { 4 * public var val: Int 5 * public var left: TreeNode? 6 * public var right: TreeNode? 7 * public init(_ val: Int) { 8 * self.val = val 9 * self.left = nil 10 * self.right = nil 11 * } 12 * } 13 */ 14 class Solution { 15 func lowestCommonAncestor(_ root: TreeNode?,_ p: TreeNode?,_ q: TreeNode?) -> TreeNode? { 16 if root == nil {return nil} 17 if root!.val > max(p!.val,q!.val) 18 { 19 return lowestCommonAncestor(root!.left,p,q) 20 } 21 else if root!.val < min(p!.val,q!.val) 22 { 23 return lowestCommonAncestor(root!.right,q) 24 } 25 else 26 { 27 return root 28 } 29 } 30 } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |