二叉樹 距離最近的共同祖先

2021-10-11 14:41:07 字數 1324 閱讀 9077

分析總結

問題描述 :

//查詢距離二叉樹中2個結點最近的共同祖先 (使用者函式)

template

<

class

elemtype

>

binarytreenode

*findnearancient

( binarytree

&t, elemtype &x, elemtype &y )

;

輔助函式:

//查詢從根結點到元素值為x的結點的路徑 (成員函式,參見基本操作18)

template

<

class

elemtype

>

//q為存放路徑的順序佇列

void binarytree

::findpath

( elemtype &x, sqqueue

*>

&q )

;

輸入說明 :

第一行:表示無孩子或指標為空的特殊分隔符

第二行:二叉樹的先序序列(結點元素之間以空格分隔)

第三行:元素值x

第四行:元素值y

輸出說明 :

第一行:元素值(共同祖先)

如x、y中有根結點,則輸出null

輸入範例 :

#

a b # c d # # e # # f # g # h # #

bd

輸出範例 :
a
思路分析

實現偽碼

binarytreenode *

findnearancient

( binarytree t

, elemtype x, elemtype y )

else

if(xqueue.

getqueuenums()

< yqueue.

getqueuenums()

)else

}//裡面還有乙個節點可以出隊

if(xqueue.

getqueuenums()

>=1)

else

}

事故現場

第一次提交

分析總結

二叉樹最近共同祖先

從鍵盤接收擴充套件先序序列,以二叉鍊錶作為儲存結構,建立二叉樹。求兩個不同結點ch1,ch2的最近共同祖先。第一行 擴充套件先序序列 第二行 ch1,ch2兩個不同結點值,用乙個空格間隔。abc de g f c fb include include include typedef struct n...

二叉樹的最近公共祖先 二叉樹

給定乙個二叉樹,找到該樹中兩個指定節點的最近公共祖先。例如,給定如下二叉樹 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 的最近公共祖先是節點 ...

二叉樹的最近公共祖先

給定乙個二叉樹,找到該樹中兩個指定節點的最近公共祖先。例如,給定如下二叉樹 root 3,5,1,6,2,0,8,null,null,7,4 思路 剛開始使用boolean來判斷要查詢的兩節點在左右孩子上,後面修改為使用treenode與null判斷兩節點位置 1 分別向左孩子和右孩子遞迴。2 若當...