leetcode 首個共同祖先

2021-10-06 07:33:51 字數 639 閱讀 2851

設計並實現乙個演算法,找出二叉樹中某兩個節點的第乙個共同祖先。不得將其他的節點儲存在另外的資料結構中。注意:這不一定是二叉搜尋樹。

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

3
/

5 1/ \ /

6 2 0 8

/ 7 4

遞迴中止條件 如果當前查詢的節點是空的那麼函式結束, 或者根節點等於p,q中任意乙個節點,那麼也相當於找到我們所找的公共祖先(根據定義最近公共祖先節點可以為節點本身)

分情況討論, left為在左子樹中尋找公共祖先或p,q節點的結果, right為在右子樹中尋找公共祖先或p,q節點的結果 2.1 如果left與right都不為空,證明在左右子樹各找到了p,q中的乙個,所以當前節點肯定是公共祖先,返回即可 2.2 如果left不為空right為空,證明要找的祖先在左子樹中,返回左子樹的遞迴結果即可 2.3 如果left為空right不為空,同上

treenode*

lowestcommonancestor

(treenode* root, treenode* p, treenode* q)

leetcode 首個共同祖先 遞迴

設計並實現乙個演算法,找出二叉樹中某兩個節點的第乙個共同祖先。不得將其他的節點儲存在另外的資料結構中。注意 這不一定是二叉搜尋樹。例如,給定如下二叉樹 root 3,5,1,6,2,0,8,null,null,7,4 3 5 1 6 2 0 8 7 4 示例 1 輸入 root 3,5,1,6,2,...

leetcode首個公共祖先

設計並實現乙個演算法,找出二叉樹中某兩個節點的第乙個共同祖先。不得將其他的節點儲存在另外的資料結構中。注意 這不一定是二叉搜尋樹。例如,給定如下二叉樹 root 3,5,1,6,2,0,8,null,null,7,4 3 5 1 6 2 0 8 7 4 示例 1 輸入 root 3,5,1,6,2,...

面試題 04 07 首個共同祖先

設計並實現乙個演算法,找出二叉樹中某兩個節點的第乙個共同祖先。不得將其他的節點儲存在另外的資料結構中。注意 這不一定是二叉搜尋樹。definition for a binary tree node.struct treenode class solution treenode lowestcommo...