zoukankan      html  css  js  c++  java
  • 236. Lowest Common Ancestor of a Binary Tree 二叉树的最低公共祖先

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

    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).”

     

    Example 1:

    Input: root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 1
    Output: 3
    Explanation: The LCA of nodes 5 and 1 is 3.
    

    Example 2:

    Input: root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 4
    Output: 5
    Explanation: The LCA of nodes 5 and 4 is 5, since a node can be a descendant of itself according to the LCA definition.
    

    Example 3:

    Input: root = [1,2], p = 1, q = 2
    Output: 1

    复习时还不会的地方:不知道dc的left right为什么要在函数里面inside定义
    因为这就是递归啊!这个节点也有属于它的子节点,需要一直循环下去

    root和p q有什么关系啊?感觉是三个独立的点,不太懂
    思路:反正就是不停地递归,所以root.left定义一次,root.right定义一次。典型的DC。

     

    class Solution {
        public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
            //cc
            if (root == null || p == root || q == root)
                return root;
            
            //定义
            TreeNode left = lowestCommonAncestor(root.left, p, q);
            TreeNode right = lowestCommonAncestor(root.right, p, q);
            
            //分开讨论
            if (left != null && right != null) {
                return root;
            } else if (left == null) {
                return right;
            } else {
                return left;
            } 
                    
        }
    }
    View Code

     



     
  • 相关阅读:
    ACL最大权限及相关命令
    ACL权限设置
    Linux权限管理--ACL权限简介
    Linux用户信息文件/etc/passwd
    本地光盘yum源的搭建
    响应式 和 移动 web
    svg
    vi 命令
    html 语法
    运营给的广告设计稿如何做
  • 原文地址:https://www.cnblogs.com/immiao0319/p/13882404.html
Copyright © 2011-2022 走看看