分析總結
問題描述 :
//查詢距離二叉樹中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 若當...