二叉樹的最近公共祖先

2021-10-05 13:41:05 字數 1296 閱讀 2304

題目描述:

給定乙個二叉樹, 找到該樹中兩個指定節點的最近公共祖先。

例如,給定如下二叉樹: 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 為不同節點且均存在於給定的二叉樹中。

思路:**:

/**

* definition for a binary tree node.

* public class treenode

* }*/public

class

solution

public

bool

recursetree

(treenode current,

treenode p,

treenode q)

int left=

this

.recursetree

(current.left,p,q)?1

:0;int right=

this

.recursetree

(current.right,p,q)?1

:0;int mid=

(current==p||current==q)?1

:0;if

(mid+left+right>=2)

return

(mid+left+right>0)

;}public

treenode

lowestcommonancestor

(treenode root,

treenode p,

treenode q)

}

執**況

二叉樹的最近公共祖先

給定乙個二叉樹,找到該樹中兩個指定節點的最近公共祖先。例如,給定如下二叉樹 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,...