leetcode 236 二叉樹的最近公共祖先

2021-10-08 01:57:04 字數 921 閱讀 3446

題目:

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

例如,給定如下二叉樹:  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。

解題思路:

遞迴。

如果左右子樹遞迴呼叫都有結果,說明p和q分居左右子樹,返回它們的父節點

如果只是其中乙個子樹遞迴呼叫有結果,說明p和q都在這個子樹,則返回該子樹遞迴呼叫的結果

如果兩個子樹遞迴呼叫的結果都為null,說明p和q都不在這倆子樹中,返回null

**:

/**

* definition for a binary tree node.

* function treenode(val)

*//**

* @param root

* @param p

* @param q

* @return

*/var lowestcommonancestor = function(root, p, q)

var left = lowestcommonancestor(root.left,p,q);

var right = lowestcommonancestor(root.right,p,q);

if(left != null && right != null)

return left != null ? left : right;

};

LeetCode236 二叉樹最近祖先

思考 這個函式就是查詢p,q兩個節點的祖先,然後給了這棵樹的root,1 它先進行判斷,根節點是不是null 或者根節點是否是p q,要是有乙個是,那祖先就肯定是root 2 它用了遞迴的思想去查詢左右兩個子樹,因為pq的祖先要麼在左邊,要麼就在右邊,所以肯定能找到乙個祖先。3 若找到的left 子...

LeetCode 236 二叉樹最近公共祖先

leetcode 236 二叉樹最近公共祖先 236.二叉樹的最近公共祖先 題目描述 給定乙個二叉樹,找到該樹中兩個指定節點的最近公共祖先。解體思路 分兩部分解決 第一部分 實現判斷兩個結點包含於某根節點的子樹內 第二部分 先序遍歷二叉樹,如果根節點的子樹包含qp目標結點 傳入左孩子,進行遞迴。傳入...

leetcode 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 的最近公共祖先是節點 ...