面試題 04 08 首個共同祖先

2021-10-17 20:48:29 字數 969 閱讀 9479

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

例如,給定如下二叉樹: root =[3

//1,節點p或者q是root節點,返回根節點

if(root-

>val == p-

>val ||root-

>val == q-

>val)

treenode* left =

lowestcommonancestor

(root-

>left, p, q)

;// left 記錄p或q是在左子樹找到的

treenode* right =

lowestcommonancestor

(root-

>right, p, q)

;// right 記錄p或q是在左子樹找到的

//2,p,q分別在左右兩棵子樹上,返回根節點

if(left !=

null

&& right !=

null

)//p,q在同一棵子樹上

if(left)

else}}

;

面試題 04 07 首個共同祖先

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

程式設計師面試金典 0408 首個共同祖先

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

leetcode面試題04 08 首個公共祖先

1.遞迴 設函式f root,p,q 返回的是p,q的公共祖先,則有三種情況,公共祖先為根節點root,公共祖先在root的左子樹中,公共祖先在root的右子樹中,函式f root left,p,q 是在根節點的左子樹中尋找p,q的公共祖先,則右四種情況 公共祖先為節點root left,公共祖先在...