看了一眼別人的答案,是我想太複雜了。。直接在左右進行判斷就好,第乙個出現的一定是公共祖先。
這道題求最近公共祖先,我的想法是先在二叉樹中找到這兩個節點,然後將這兩個節點到根節點的所有節點分別存到兩個容器中,因為是從當前節點到根節點的逆序儲存,所以只需要再對兩個容器進行對比,找到他們最近相同的乙個點,這個點就一定是他們的最近公共祖先。
在寫**時,如果存在布林值,在進行判斷時一定要記得這樣寫
bool ret = false;
if( !ret )這樣進行判斷不易錯,我寫成ret=false,這個錯誤系統不報錯,我自己建了個樹進行單步除錯了半天發現這個錯誤。
treenode* lowestcommonancestor(treenode* root, treenode* p, treenode* q)}}
return node;}};
二叉樹的最近公共祖先
給定乙個二叉樹,找到該樹中兩個指定節點的最近公共祖先。例如,給定如下二叉樹 root 3,5,1,6,2,0,8,null,null,7,4 思路 剛開始使用boolean來判斷要查詢的兩節點在左右孩子上,後面修改為使用treenode與null判斷兩節點位置 1 分別向左孩子和右孩子遞迴。2 若當...
二叉樹的最近公共祖先
輸入 root 3,5,1,6,2,0,8,null,null,7,4 p 5,q 1 輸出 3 輸入 root 3,5,1,6,2,0,8,null,null,7,4 p 5,q 4 輸出 5 法1 分別找出根節點到兩個節點的路徑,則最後乙個公共節點就是最低公共祖先。法2 public treen...
二叉樹的最近公共祖先
例如,給定如下二叉樹 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 的最近公共祖先是節點 3。示例 2 輸入 root 3,5,1,6,2,0,...