此題是利用二叉樹的後序遍歷來求解最近公共祖先。
遞迴的出口是遍歷到葉子結點或者當前結點(root)等於待搜尋的結點(p或者q),此時需要返回root。
如果左右子樹中均沒有找到(返回null)說明p或者q都不在左右子樹,當前root肯定不是最近公共祖先。
如果左右子樹均不為空,說明p和q分布在當前結點的左右兩側。
如果有一邊為空(left或者right),說明p或者q在非空的一側(此時可能兩個都在那顆非空的子樹上,也有可能只有乙個在)。
/**
* definition for a binary tree node.
* public class treenode
* }*/class solution
}
遞迴 236 二叉樹的最近公共祖先
給定乙個二叉樹,找到該樹中兩個指定節點的最近公共祖先。例如,給定如下二叉樹 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 的最近公共祖先是節點 ...
236 二叉樹最近公共祖先
給定乙個二叉樹,找到該樹中兩個指定節點的最近公共祖先。最近公共祖先的定義為 對於有根樹 t 的兩個結點 p q,最近公共祖先表示為乙個結點 x,滿足 x 是 p q 的祖先且 x 的深度盡可能大 乙個節點也可以是它自己的祖先 例如,給定如下二叉樹 root 3,5,1,6,2,0,8,null,nu...
236 二叉樹的最近公共祖先
給定乙個二叉樹,找到該樹中兩個指定節點的最近公共祖先。例如,給定如下二叉樹 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 ...