給定乙個二叉樹, 找到該樹中兩個指定節點的最近公共祖先。
例如,給定如下二叉樹: 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,8,null,null,7,4], p = 5, q = 4 輸出: 5 解釋: 節點 5 和節點 4 的最近公共祖先是節點 5。因為根據定義最近公共祖先節點可以為節點本身。
說明:所有節點的值都是唯一的。p、q 為不同節點且均存在於給定的二叉樹中。
如果 left 和 right 都為空,則返回空
若left為空,那最終結果只要看 right
若 right 為空,那最終結果只要看 left
如果 left 和 right 都非空,因為只給了 p 和 q 兩個結點,都非空,說明一邊乙個,因此 root 是他們的最近公共祖先
//go/** * definition for treenode.
* type treenode struct
*/func lowestcommonancestor(root, p, q *treenode) *treenode
if root == p || root == q
// 遞迴
left := lowestcommonancestor(root.left, p, q)
right := lowestcommonancestor(root.right, p, q)
// 返回值
if left == nil && right == nil
if left == nil
if right == nil
return root
}
二叉樹的最近公共祖先
給定乙個二叉樹,找到該樹中兩個指定節點的最近公共祖先。例如,給定如下二叉樹 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,...