中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

網(wǎng)站統(tǒng)計源碼google關(guān)鍵詞seo

網(wǎng)站統(tǒng)計源碼,google關(guān)鍵詞seo,北京網(wǎng)站外包公司,開發(fā)手機app需要學(xué)什么知識總結(jié)leetcode75中深度優(yōu)先搜索的算法題解題思路。 上一篇:力扣75——鏈表 以下代碼部分為本人所寫,部分為官方示例代碼。 力扣75——深度優(yōu)先搜索 1 二叉樹的最大深度2 葉子相似的樹3 統(tǒng)計二叉樹中好節(jié)點的數(shù)目4 路徑總和 III5 二叉樹中的最長交錯路徑6 …

總結(jié)leetcode75中深度優(yōu)先搜索的算法題解題思路。
上一篇:力扣75——鏈表
以下代碼部分為本人所寫,部分為官方示例代碼。

力扣75——深度優(yōu)先搜索

  • 1 二叉樹的最大深度
  • 2 葉子相似的樹
  • 3 統(tǒng)計二叉樹中好節(jié)點的數(shù)目
  • 4 路徑總和 III
  • 5 二叉樹中的最長交錯路徑
  • 6 二叉樹的最近公共祖先
  • 1-6 解題總結(jié)

1 二叉樹的最大深度

題目:

給定一個二叉樹 root ,返回其最大深度。二叉樹的 最大深度 是指從根節(jié)點到最遠(yuǎn)葉子節(jié)點的最長路徑上的節(jié)點數(shù)。

題解:遞歸。

 class Solution {public:int maxDepth(TreeNode* root) {if (root == nullptr)return 0;else {return 1 + max(maxDepth(root->left), maxDepth(root->right));}}};

2 葉子相似的樹

題目:

請考慮一棵二叉樹上所有的葉子,這些葉子的值按從左到右的順序排列形成一個 葉值序列 。
如果有兩棵二叉樹的葉值序列是相同,那么我們就認(rèn)為它們是 葉相似 的。
如果給定的兩個根結(jié)點分別為 root1 和 root2 的樹是葉相似的,則返回 true;否則返回 false 。

題解:調(diào)用遞歸函數(shù)leafOperate,用r1記錄root1葉子節(jié)點的值,r2記錄root2葉子節(jié)點的值。

 class Solution {public:bool leafSimilar(TreeNode* root1, TreeNode* root2) {vector<int> r1, r2;if (root1) {if (root1->left || root1->right) {leafOperate(root1->left, r1);leafOperate(root1->right, r1);}else {r1.push_back(root1->val);}		 }if (root2 != nullptr) {if (root2->left || root2->right) {leafOperate(root2->left, r2);leafOperate(root2->right, r2);}else {r2.push_back(root2->val);}}return r1 == r2;}void leafOperate(TreeNode* root, vector<int> &r) {if (root == nullptr) return;else {if (root->left || root->right) {leafOperate(root->left, r);leafOperate(root->right, r);}else {r.push_back(root->val);}}}};

3 統(tǒng)計二叉樹中好節(jié)點的數(shù)目

題目:

給你一棵根為 root 的二叉樹,請你返回二叉樹中好節(jié)點的數(shù)目。「好節(jié)點」X 定義為:從根到該節(jié)點 X 所經(jīng)過的節(jié)點中,沒有任何節(jié)點的值大于 X 的值。

題解:遞歸查找。

class Solution {public:int goodNodes(TreeNode* root) {if (root == nullptr) return 0;if (root->left == nullptr&&root->right == nullptr) return 1;int nums = 1, maxnow = root->val;goodnodes(root->left, nums, maxnow);goodnodes(root->right, nums, maxnow);return nums;}void goodnodes(TreeNode* root, int &nums,int maxnow) {if (root == nullptr) return;if (root->val >= maxnow) {nums++;maxnow = root->val;}if (root->left == nullptr&&root->right == nullptr) return;goodnodes(root->left, nums, maxnow);goodnodes(root->right, nums, maxnow);}};

4 路徑總和 III

題目:


給定一個二叉樹的根節(jié)點 root ,和一個整數(shù) targetSum ,求該二叉樹里節(jié)點值之和等于 targetSum 的 路徑 的數(shù)目。路徑 不需要從根節(jié)點開始,也不需要在葉子節(jié)點結(jié)束,但是路徑方向必須是向下的(只能從父節(jié)點到子節(jié)點)。

題解:遞歸。pathSum函數(shù)是計算所有可能的路徑的。rootSum函數(shù)是計算以該節(jié)點開始,可能得路徑的。

class Solution {
public:int rootSum(TreeNode* root, long targetSum) {if (!root) {return 0;}int ret = 0;if (root->val == targetSum) {ret++;} ret += rootSum(root->left, targetSum - root->val);ret += rootSum(root->right, targetSum - root->val);return ret;}int pathSum(TreeNode* root, int targetSum) {if (!root) {return 0;}int ret = rootSum(root, targetSum);ret += pathSum(root->left, targetSum);ret += pathSum(root->right, targetSum);return ret;}
};

5 二叉樹中的最長交錯路徑

題目:

給你一棵以 root 為根的二叉樹,二叉樹中的交錯路徑定義如下:選擇二叉樹中 任意 節(jié)點和一個方向(左或者右)。
如果前進(jìn)方向為右,那么移動到當(dāng)前節(jié)點的的右子節(jié)點,否則移動到它的左子節(jié)點。
改變前進(jìn)方向:左變右或者右變左。
重復(fù)第二步和第三步,直到你在樹中無法繼續(xù)移動。
交錯路徑的長度定義為:訪問過的節(jié)點數(shù)目 - 1(單個節(jié)點的路徑長度為 0 )。請你返回給定樹中最長 交錯路徑 的長度。

題解:遞歸。

class Solution {
public:int maxAns;/* 0 => left, 1 => right */void dfs(TreeNode* o, bool dir, int len) {maxAns = max(maxAns, len);if (!dir) {if (o->left) dfs(o->left, 1, len + 1);if (o->right) dfs(o->right, 0, 1);} else {if (o->right) dfs(o->right, 0, len + 1);if (o->left) dfs(o->left, 1, 1);}} int longestZigZag(TreeNode* root) {if (!root) return 0;maxAns = 0;dfs(root, 0, 0);dfs(root, 1, 0);return maxAns;}
};

6 二叉樹的最近公共祖先

題目:

給定一個二叉樹, 找到該樹中兩個指定節(jié)點的最近公共祖先。百度百科中最近公共祖先的定義為:“對于有根樹 T 的兩個節(jié)點 p、q,最近公共祖先表示為一個節(jié)點 x,滿足 x 是 p、q 的祖先且 x 的深度盡可能大(一個節(jié)點也可以是它自己的祖先)。”

題解:先遞歸,找到每個節(jié)點的父節(jié)點。然后給節(jié)點p的所有祖先節(jié)點打上標(biāo)記,最后查看節(jié)點q祖先節(jié)點中哪個是已經(jīng)打上標(biāo)記的。

class Solution {
public:unordered_map<int, TreeNode*> fa;unordered_map<int, bool> vis;void dfs(TreeNode* root){if (root->left != nullptr) {fa[root->left->val] = root;dfs(root->left);}if (root->right != nullptr) {fa[root->right->val] = root;dfs(root->right);}}TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {fa[root->val] = nullptr;dfs(root);while (p != nullptr) {vis[p->val] = true;p = fa[p->val];}while (q != nullptr) {if (vis[q->val]) return q;q = fa[q->val];}return nullptr;}
};

1-6 解題總結(jié)

這些題都是深度優(yōu)先搜索。
基本上深度優(yōu)先搜索都是采用遞歸函數(shù)來實現(xiàn)。
題4比較特殊,它的情況按是否包括當(dāng)前節(jié)點來劃分,所以得有兩個遞歸函數(shù)。

http://www.risenshineclean.com/news/65619.html

相關(guān)文章:

  • 長沙做網(wǎng)站的公司有哪些百度代運營
  • 贛州seo快速霸屏短視頻優(yōu)化
  • 購物幫–做特惠的導(dǎo)購網(wǎng)站磁力bt種子搜索神器
  • 網(wǎng)站不能粘貼怎么做全國各城市疫情高峰感染進(jìn)度
  • 17網(wǎng)站一起做網(wǎng)店普寧池尾雅晨做外貿(mào)有哪些網(wǎng)站平臺
  • 怎么做網(wǎng)站和服務(wù)器嗎百度網(wǎng)絡(luò)營銷中心
  • 微信高端網(wǎng)站建設(shè)中國國家培訓(xùn)網(wǎng)官網(wǎng)
  • 北京網(wǎng)站優(yōu)化步驟百度電腦版下載官方
  • 衡水精品網(wǎng)站建設(shè)報價seo網(wǎng)站快速排名
  • 做一個網(wǎng)站需要多久網(wǎng)絡(luò)推廣崗位職責(zé)和任職要求
  • 做訂餐網(wǎng)站數(shù)據(jù)庫應(yīng)該有哪些表edm營銷
  • 合江做網(wǎng)站網(wǎng)推廣公司
  • 油金地 做網(wǎng)站品牌推廣營銷平臺
  • 音樂盒的網(wǎng)站怎么做代寫稿子的平臺
  • 深圳建站公司模板網(wǎng)絡(luò)營銷公司排行
  • 怎么制作app網(wǎng)站千萬不要去電商公司上班
  • 制作網(wǎng)站公司年收入多少百度指數(shù)關(guān)鍵詞未收錄怎么辦
  • 平安做計劃書的網(wǎng)站人力資源培訓(xùn)
  • 網(wǎng)站建設(shè)公司專業(yè)的建站優(yōu)化公司百度seo怎么優(yōu)化
  • 每月網(wǎng)站流量網(wǎng)絡(luò)營銷常用的工具
  • 加關(guān)鍵詞的網(wǎng)站石家莊網(wǎng)站seo外包
  • 上海網(wǎng)站企業(yè)軟文推廣是什么
  • 網(wǎng)站后期維護(hù)收費熱門網(wǎng)站排名
  • 貿(mào)易網(wǎng)站建設(shè)sem投放是什么意思
  • 網(wǎng)頁制作工具的選擇與網(wǎng)站整體風(fēng)格網(wǎng)絡(luò)廣告推廣服務(wù)
  • 老司機做爰網(wǎng)站老師影音百度托管運營哪家好
  • 家裝設(shè)計師培訓(xùn)學(xué)校湖南企業(yè)seo優(yōu)化推薦
  • 新手做網(wǎng)站做什么樣的網(wǎng)站建設(shè)公司哪個好呀
  • 怎么在微信做企業(yè)網(wǎng)站app開發(fā)費用標(biāo)準(zhǔn)
  • 有哪些設(shè)計的很優(yōu)秀的網(wǎng)站企業(yè)培訓(xùn)內(nèi)容