尋找二叉樹兩個結點的最低共同父節點

2021-06-25 14:47:35 字數 734 閱讀 1356

題目:二叉樹的結點的定義如下:

struct

treenode

;

輸入二叉樹中的兩個結點,輸出這兩個結點在數中最低的共同父結點。

/尋找二叉樹兩個結點的最低共同父節點

treenode *findfirstcommonparentnode(treenode *proot, treenode *pnodeone, treenode *pnodetwo)

if (proot == pnodeone || proot == pnodetwo)

treenode *pleft = findfirstcommonparentnode(proot->m_pleft, pnodeone, pnodetwo);

treenode *pright = findfirstcommonparentnode(proot->m_pright, pnodeone, pnodetwo);

if (null == pleft) //1、左子樹沒有找到任何乙個結點,則第乙個公共父節點必定在右子樹,而且找到第乙個結點就是最低共同父節點

else if (null == pright) //2、右子樹沒有找到任何乙個結點,則第乙個公共父節點必定在左子樹,而且找到第乙個結點就是最低共同父節點

else //3、分別在結點的左右子樹找到,則此節點必為第乙個公共父節點

}

二叉樹兩個結點的最低共同父結點

需要思考為什麼採用inorder遍歷是可以的?其他遍歷方式結果不正確?include templateclass treenode t value treenode left treenode right templateclass visitcontext treenode node1 treen...

二叉樹兩個結點的最低共同父結點

輸入二叉樹中的兩個結點,輸出這兩個結點在數中最低的共同父結點。網上看來的題目,以下都有參考。求數中兩個結點的最低共同結點是面試中經常出現的乙個問題。這個問題至少有兩個變種。第一變種是二叉樹是一種特殊的二叉樹 查詢二叉樹。也就是樹是排序過的,位於左子樹上的結點都比父結點小,而位於右子樹的結點都比父結點...

二叉樹兩個結點的最低共同父結點

入二叉樹中的兩個結點,輸出這兩個結點在數中最低的共同父結點。分析 求數中兩個結點的最低共同結點是面試中經常出現的乙個問題。這個問題至 少有兩個變種。第一變種是二叉樹是一種特殊的二叉樹 查詢二叉樹。也就是樹是排序過的,位於 左子樹上的結點都比父結點小,而位於右子樹的結點都比父結點大。我們只需要從根結點...