給定一棵二叉樹,找到兩個節點的最近公共父節點(lca)。
最近公共祖先是兩個節點的公共的祖先節點且具有最大深度。
假設給出的兩個節點都在樹中存在
yes樣例對於下面這棵二叉樹
4
/ \3 7
/ \5 6
/*** definition of treenode:
* class treenode
* }*/class solution
if(root==p)
bool found=findnode(root->left,p);
if(!found)
return found;
}treenode *lowestcommonancestor(treenode *root, treenode *a, treenode *b)
if(root==a||root==b)
if(findnode(root->left,a))
else
}else
else}}
};
另一種思路:
先求出從根節點到兩個節點的路徑;
然後比較兩條路徑,最後乙個相同的節點就是他們在二叉樹中的最低公共祖先。
其實將問題轉化為求鍊錶第乙個相交的節點。
lintcode 最近公共祖先
題目 給定一棵二叉樹,找到兩個節點的最近公共父節點 lca 最近公共祖先是兩個節點的公共的祖先節點且具有最大深度。definition of treenode public class treenode 初首先看看3和5,這兩個節點分居根節點4的兩側,如果可以從子節點往父 節點遞推,那麼他們將在根節...
LintCode 88 最近公共祖先
給定一棵二叉樹,找到兩個節點的最近公共父節點 lca 最近公共祖先是兩個節點的公共的祖先節點且具有最大深度。假設給出的兩個節點都在樹中存在 樣例 樣例 1 輸入 1,1 輸出 1 解釋 二叉樹如下 只有乙個節點 1lca 1,1 1 樣例 2 輸入 3,5 輸出 4 解釋 二叉樹如下 4 3 7 5...
LintCode 88 最近公共祖先
給定一棵二叉樹,找到兩個節點的最近公共父節點 lca 最近公共祖先是兩個節點的公共的祖先節點且具有最大深度。注意事項 假設給出的兩個節點都在樹中存在 樣例對於下面這棵二叉樹 標籤code definition of treenode class treenode class solution pat...