美文网首页
SWIFT版二叉树查找最近公共父节点

SWIFT版二叉树查找最近公共父节点

作者: voidnil | 来源:发表于2020-11-09 11:03 被阅读0次
//二叉树
public class TreeNode {
    public var val: Int
    public var left: TreeNode?
    public var right: TreeNode?
    
    public init(_ val: Int) {
        self.val = val
        self.left = nil
        self.right = nil
    }
    
    func  equal(_ root: TreeNode?) -> Bool {
        return (self.val == root?.val) && (self.left?.val == root?.left?.val) && (self.right?.val == root?.right?.val)
    }
}

func lowestCommonAncestor(_ root: TreeNode?, _ p: TreeNode?, _ q: TreeNode?) -> TreeNode? {
    if root?.val == nil || root!.equal(p) || root!.equal(q) {
        return root
    }
    
    let left:TreeNode? = lowestCommonAncestor(root!.left, p, q)
    
    let right: TreeNode? = lowestCommonAncestor(root!.right, p, q)
    
    if left?.val != nil && right != nil {
        return root
        
    }
    
    return left?.val != nil ? left : right
    
}

相关文章

  • SWIFT版二叉树查找最近公共父节点

  • 最近公共祖先系列

    最近公共祖先I 描述: 给定一棵二叉树,找到两个节点的最近公共父节点 (LCA)。最近公共祖先是两个节点的公共的祖...

  • lintcode 最近公共祖先

    给定一棵二叉树,找到两个节点的最近公共父节点(LCA)。最近公共祖先是两个节点的公共的祖先节点且具有最大深度。样例...

  • Longest Common Ancetor

    二叉树公共父节点专题 BST,二叉搜索树的公共父节点 https://leetcode.com/problems/...

  • 小米-基础算法-最近公共祖先

    给一棵二叉树和二叉树中的两个节点,找到这两个节点的最近公共祖先LCA。两个节点的最近公共祖先,是指两个节点的所有父...

  • 算法—— 最近公共祖先 III

    给一棵二叉树和二叉树中的两个节点,找到这两个节点的最近公共祖先LCA。两个节点的最近公共祖先,是指两个节点的所有父...

  • 最近公共父节点

    1,排序二叉树 p<最近父节点

  • 二叉树与红黑树

    BST 二叉查找树就是一颗二叉树,他的左节点比父节点要小,右节点比父节点要大。他的高度决定的查找效率。 当查找BS...

  • 二叉树-最低公共父节点(1)

    给定一个二叉树(不是二叉查找树),和两个节点,求这两个节点的最低公共父节点。我们先介绍一个暴力的思路:遍历并判断。...

  • 二叉树-最近的公共祖先

    已知二叉树,求二叉树中给定的两个节点的最近公共祖先。 最近公共祖先: 两节点v与w的最近公共祖先u,满足在树上最低...

网友评论

      本文标题:SWIFT版二叉树查找最近公共父节点

      本文链接:https://www.haomeiwen.com/subject/ncrlbktx.html