236 二叉樹的最近公共祖先

2021-09-22 10:22:16 字數 1372 閱讀 9896

給定乙個二叉樹, 找到該樹中兩個指定節點的最近公共祖先。

例如,給定如下二叉樹:  root = [3,5,1,6,2,0,8,null,null,7,4]

示例 1:

輸入:root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 1輸出:3解釋:節點5和節點1的最近公共祖先是節點3。
示例 2:

輸入:root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 4輸出:5解釋:節點5和節點4的最近公共祖先是節點5。因為根據定義最近公共祖先節點可以為節點本身。
說明:解題思路:

注意p,q必然存在樹內, 且所有節點的值唯一!!!

遞迴思想, 對以root為根的(子)樹進行查詢p和q, 如果root == null || p || q 直接返回root

表示對於當前樹的查詢已經完畢, 否則對左右子樹進行查詢, 根據左右子樹的返回值判斷:

1. 左右子樹的返回值都不為null, 由於值唯一左右子樹的返回值就是p和q, 此時root為lca

2. 如果左右子樹返回值只有乙個不為null, 說明只有p和q存在與左或右子樹中, 最先找到的那個節點為lca

3. 左右子樹返回值均為null, p和q均不在樹中, 返回null

/**

* definition for a binary tree node.

* public class treenode

* }*/class solution

if(root ==p || root==q)

treenode left=lowestcommonancestor(root.left,p,q);

treenode right=lowestcommonancestor(root.right,p,q);

if(left!=null && right!=null)else if(left!=null)else if(right!=null)

return null;}}

236 二叉樹最近公共祖先

給定乙個二叉樹,找到該樹中兩個指定節點的最近公共祖先。最近公共祖先的定義為 對於有根樹 t 的兩個結點 p q,最近公共祖先表示為乙個結點 x,滿足 x 是 p q 的祖先且 x 的深度盡可能大 乙個節點也可以是它自己的祖先 例如,給定如下二叉樹 root 3,5,1,6,2,0,8,null,nu...

236 二叉樹的最近公共祖先

給定乙個二叉樹,找到該樹中兩個指定節點的最近公共祖先。例如,給定如下二叉樹 root 3,5,1,6,2,0,8,null,null,7,4 示例 1 輸入 root 3,5,1,6,2,0,8,null,null,7,4 p 5,q 1 輸出 3 解釋 節點 5 和節點 1 的最近公共祖先是節點 ...

236 二叉樹的最近公共祖先

給定乙個二叉樹,找到該樹中兩個指定節點的最近公共祖先。例如,給定如下二叉樹 root 3,5,1,6,2,0,8,null,null,7,4 示例 1 輸入 root 3,5,1,6,2,0,8,null,null,7,4 p 5,q 1 輸出 3 解釋 節點 5 和節點 1 的最近公共祖先是節點 ...