日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

LeetCode 1650. 二叉树的最近公共祖先 III(哈希)

發布時間:2024/7/5 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LeetCode 1650. 二叉树的最近公共祖先 III(哈希) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

    • 1. 題目
    • 2. 解題

1. 題目

給定一棵二叉樹中的兩個節點 p 和 q,返回它們的最近公共祖先節點(LCA)。

每個節點都包含其父節點的引用(指針)。Node 的定義如下:

class Node {public int val;public Node left;public Node right;public Node parent; }

根據維基百科中對最近公共祖先節點的定義:“兩個節點 p 和 q 在二叉樹 T 中的最近公共祖先節點是后代節點中既包括 p 又包括 q 的最深節點(我們允許一個節點為自身的一個后代節點)”。

一個節點 x 的后代節點是節點 x 到某一葉節點間的路徑中的節點 y。

示例 1:

輸入: root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 1 輸出: 3 解釋: 節點 51 的最近公共祖先是 3

示例 2:

輸入: root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 4 輸出: 5 解釋: 節點 54 的最近公共祖先是 5,根據定義,一個節點可以是自身的最近公共祖先。示例 3: 輸入: root = [1,2], p = 1, q = 2 輸出: 1提示: 樹中節點個數的范圍是 [2, 10^5]-109 <= Node.val <= 109 所有的 Node.val 都是互不相同的。 p != q p 和 q 存在于樹中。

來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/lowest-common-ancestor-of-a-binary-tree-iii
著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。

2. 解題

  • 往上找父親,并插入哈希,另一個節點也往上找,直到父親在哈希中出現
/* // Definition for a Node. class Node { public:int val;Node* left;Node* right;Node* parent; }; */class Solution { public:Node* lowestCommonAncestor(Node* p, Node * q) {unordered_set<Node*> s;while(p){s.insert(p);p = p->parent;}while(q){if(s.find(q) != s.end())return q;q = q->parent;}return NULL;} };

16 ms 11.3 MB C++

不用哈希,就是等效為鏈表相交,求相交節點問題。


我的CSDN博客地址 https://michael.blog.csdn.net/

長按或掃碼關注我的公眾號(Michael阿明),一起加油、一起學習進步!

總結

以上是生活随笔為你收集整理的LeetCode 1650. 二叉树的最近公共祖先 III(哈希)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。