後序遍歷就行。
//尋找二叉樹兩個結點的最低共同父節點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...
二叉樹兩個結點的最低共同父結點
輸入二叉樹中的兩個結點,輸出這兩個結點在數中最低的共同父結點。網上看來的題目,以下都有參考。求數中兩個結點的最低共同結點是面試中經常出現的乙個問題。這個問題至少有兩個變種。第一變種是二叉樹是一種特殊的二叉樹 查詢二叉樹。也就是樹是排序過的,位於左子樹上的結點都比父結點小,而位於右子樹的結點都比父結點...
二叉樹兩個結點的最低共同父結點
入二叉樹中的兩個結點,輸出這兩個結點在數中最低的共同父結點。分析 求數中兩個結點的最低共同結點是面試中經常出現的乙個問題。這個問題至 少有兩個變種。第一變種是二叉樹是一種特殊的二叉樹 查詢二叉樹。也就是樹是排序過的,位於 左子樹上的結點都比父結點小,而位於右子樹的結點都比父結點大。我們只需要從根結點...