码迷,mamicode.com
首页 > 其他好文 > 详细

[编程题] lc[236. 二叉树的最近公共祖先]

时间:2020-07-19 00:39:06      阅读:85      评论:0      收藏:0      [点我收藏+]

标签:problem   技术   img   -o   图片   tps   ble   load   inf   

[编程题] lc:236. 二叉树的最近公共祖先

题目描述

技术图片

输入输出例子

技术图片

思路

使用后续遍历的思想,根据找到了左和右的情况,进行相应的返回结果。

Java代码

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
       //如果我们碰到了是
       if(root==null || root==p || root==q){return root;}
       //这里就使用到了后续遍历的思想了
       TreeNode left = lowestCommonAncestor(root.left,p,q);
       TreeNode right = lowestCommonAncestor(root.right,p,q);
       //上边得到了当前root的左右子树,判断情况,我们就知道我们返回什么。
       //如果左边没有任何p,q,那直接返回right节点是一定能找到的
       if(left==null){
           return right;
       }
       if(right==null){
           return left;//类似原理
       }
       //如果左右都不为空,那么root节点就是公共祖先
       if(left!=null && right!=null){
           return root;
       }else{
           return null;
       }    

   }
}

[编程题] lc[236. 二叉树的最近公共祖先]

标签:problem   技术   img   -o   图片   tps   ble   load   inf   

原文地址:https://www.cnblogs.com/jiyongjia/p/13338026.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!