設計並實現乙個演算法,找出二叉樹中某兩個節點的第乙個共同祖先。不得將其他的節點儲存在另外的資料結構中。注意:這不一定是二叉搜尋樹。
例如,給定如下二叉樹: 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,公共祖先在...