力扣 236 二叉樹的最近公共祖先

2021-10-05 23:12:41 字數 799 閱讀 3140

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

例如,給定如下二叉樹:  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,都直接返回,否則,分別對左右子樹進行查詢:

1. 如果左右子樹的返回值都不為null,由於所有節點的值唯一,則root就是最近公共祖先lca;

2. 如果左右子樹的返回值只有乙個不為null,則說明p或q在這棵子樹中,將該值返回;

3. 如果左右子樹的返回值均為null,則說明p和q都不在這棵子樹中,返回null。

/**

* definition for a binary tree node.

* public class treenode

* }*/class solution

}

力扣 236二叉樹的最近公共祖先

自底向上,有點後序遍歷的意思。其實在自上而下遞迴之前,先篩選當前節點也能ac 1 後序遍歷,左右根的遍歷。2 首先確保本節點非null,或者與目標節點相同直接返回本節點。3 本節點非空,則判斷左右子節點是否為null。這裡分為4種情況 1 左右子節點都為null,那就不為所求了,直接返回null 2...

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的最近公共祖先是節點3。示例 2 ...