亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

leetcode-第三周

2019-11-06 06:07:00
字體:
來源:轉載
供稿:網友

513. Find Bottom Left Tree Value

Given a binary tree, find the leftmost value in the last row of the tree.

Example: Input:

1 / / 2 3 / / /4 5 6 / 7

Output: 7 Note: You may assume the tree (i.e., the given root node) is not NULL.

思路:DFS,記錄當前最深深度第一個訪問節點的值,即為答案

/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; * 思路:DFS,記錄當前最深深度第一個訪問節點的值,即為答案 */class Solution {PRivate: void dfs(TreeNode *root, int cur_dep, int *mx_dep, int *ret) { if (*mx_dep < cur_dep) { *mx_dep = cur_dep; *ret = root->val; } if (root->left) dfs(root->left, cur_dep + 1, mx_dep, ret); if (root->right) dfs(root->right, cur_dep + 1, mx_dep, ret); }public: int findBottomLeftValue(TreeNode* root) { if (!root) return -1; int ret = root->val, dep = 0; dfs(root, 0, &dep, &ret); return ret; }};

508. Most Frequent Subtree Sum

Given the root of a tree, you are asked to find the most frequent subtree sum. The subtree sum of a node is defined as the sum of all the node values formed by the subtree rooted at that node (including the node itself). So what is the most frequent subtree sum value? If there is a tie, return all the values with the highest frequency in any order.

Examples 1 Input:

5 / /2 -3

return [2, -3, 4], since all the values happen only once, return all of them in any order. Examples 2 Input:

5 / /2 -5

return [2], since 2 happens twice, however -5 only occur once. Note: You may assume the sum of values in any subtree is in the range of 32-bit signed integer.

思路:DFS+哈希,用哈希表記錄DFS返回的結果,然后遍歷哈希表求答案

/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; * 思路:DFS+哈希,用哈希表記錄DFS返回的結果,然后遍歷哈希表求答案 */class Solution {private: int dfs(TreeNode *root, unordered_map<int, int> &mp, int *max_cnt) { if (!root) return 0; int ret = root->val; ret += dfs(root->left, mp, max_cnt); ret += dfs(root->right, mp, max_cnt); mp[ret]++; if (*max_cnt < mp[ret]) *max_cnt = mp[ret]; return ret; }public: vector<int> findFrequentTreeSum(TreeNode* root) { unordered_map<int, int> mp; int max_cnt = 0; dfs(root, mp, &max_cnt); vector<int> ret; for (auto e: mp) { if (e.second == max_cnt) ret.push_back(e.first); } return ret; }};

297. Serialize and Deserialize Binary Tree

Serialization is the process of converting a data structure or object into a sequence of bits so that it can be stored in a file or memory buffer, or transmitted across a network connection link to be reconstructed later in the same or another computer environment.

Design an algorithm to serialize and deserialize a binary tree. There is no restriction on how your serialization/deserialization algorithm should work. You just need to ensure that a binary tree can be serialized to a string and this string can be deserialized to the original tree structure.

For example, you may serialize the following tree

1 / / 2 3 / /4 5

as “[1,2,3,null,null,4,5]”, just the same as how LeetCode OJ serializes a binary tree. You do not necessarily need to follow this format, so please be creative and come up with different approaches yourself.

思路:遞歸DFS

/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; * 思路:遞歸DFS */class Codec {private: void serialize_helper(string &ret, TreeNode *root) { if (!root) { ret += "# "; return; } else ret += to_string(root->val) + " "; serialize_helper(ret, root->left); serialize_helper(ret, root->right); } void deserialize_helper(stringstream &ss, TreeNode **p) { while (!ss.eof() && ss.peek() == ' ') ss.get(); if (ss.eof()) return; if (ss.peek() == '#') { // nullptr ss.get(); return; } int val; ss >> val; *p = new TreeNode(val); deserialize_helper(ss, &((*p)->left)); deserialize_helper(ss, &((*p)->right)); }public: // Encodes a tree to a single string. string serialize(TreeNode* root) { string ret; serialize_helper(ret, root); return ret; } // Decodes your encoded data to tree. TreeNode* deserialize(string data) { TreeNode *ret = nullptr; TreeNode **p = &ret; stringstream ss(data); deserialize_helper(ss, p); return ret; }};// Your Codec object will be instantiated and called as such:// Codec codec;// codec.deserialize(codec.serialize(root));

104. Maximum Depth of Binary Tree(非遞歸版+遞歸版)

Given a binary tree, find its maximum depth.

The maximum depth is the number of nodes along the longest path from the root node down to the farthest leaf node.

思路:非遞歸版本,優先遍歷左子樹,用棧記錄當前節點以及當前節點的深度

/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; * 思路:非遞歸版本,優先遍歷左子樹,用棧記錄當前節點以及當前節點的深度 */class Solution {public: int maxDepth(TreeNode* root) { stack<pair<TreeNode *, int> > stk; int dep = 1; for (; root; root = root->left) stk.emplace(root, dep++); int ret = 0; while (!stk.empty()) { TreeNode *cur; tie(cur, dep) = stk.top(); stk.pop(); ret = max(ret, dep); for (cur = cur->right, dep++; cur; cur = cur->left, dep++) stk.emplace(cur, dep); } return ret; }};/** * 遞歸版 */class Solution {public: int maxDepth(TreeNode* root) { if (!root) return 0; return max(maxDepth(root->left), maxDepth(root->right)) + 1; }};
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品欧美久久久| 久久精品91久久香蕉加勒比| 日韩电影免费在线观看| 中文字幕欧美精品日韩中文字幕| 欧美黑人xxxⅹ高潮交| 欧美疯狂xxxx大交乱88av| 国产欧美日韩精品丝袜高跟鞋| 欧美日韩xxxxx| 日韩欧美在线国产| 亚洲精品久久久久久下一站| 亚洲精品自拍偷拍| 久久久精品一区二区三区| 成人欧美在线观看| 国产v综合ⅴ日韩v欧美大片| 久久69精品久久久久久久电影好| 美女av一区二区三区| 久久精品国产成人| 亚洲剧情一区二区| 国产精品综合久久久| 97精品久久久中文字幕免费| 日韩美女在线观看一区| 亚洲精品久久在线| 97视频免费看| 国产性猛交xxxx免费看久久| 欧美激情xxxx性bbbb| 北条麻妃在线一区二区| 国产在线拍揄自揄视频不卡99| 国内精品久久久久| 亚洲第一区在线| 国产精品丝袜久久久久久高清| 91av在线视频观看| 欧美日韩国产一区中文午夜| 亚洲国产精品久久精品怡红院| 久久久噜久噜久久综合| 国产男人精品视频| 久久久久久国产三级电影| 亚洲欧美精品一区二区| 亚洲欧美激情视频| 国产97在线亚洲| 日韩av影片在线观看| 中文字幕日韩有码| 日韩av在线影视| 欧美日本国产在线| 国产视频一区在线| 欧美另类在线观看| 日韩人体视频一二区| 精品亚洲一区二区三区在线播放| 久久九九热免费视频| 久久精品国产成人| 久久久精品国产一区二区| 奇门遁甲1982国语版免费观看高清| 国产美女高潮久久白浆| 欧美激情三级免费| 久久视频中文字幕| 日韩精品免费看| 日韩在线中文字幕| 精品一区二区三区三区| 黄色91在线观看| 亚洲福利视频在线| 91精品国产自产91精品| 国内外成人免费激情在线视频网站| 国产精品视频免费在线| 久久97久久97精品免视看| 亚洲精品福利在线观看| 精品香蕉一区二区三区| 久热国产精品视频| 欧美激情va永久在线播放| 欧美激情三级免费| www.99久久热国产日韩欧美.com| 欧美日韩在线视频一区二区| 欧美成人精品在线播放| 久久精品中文字幕一区| 精品国产鲁一鲁一区二区张丽| 亚洲视频在线看| 欧美另类99xxxxx| 91美女片黄在线观看游戏| 欧美乱人伦中文字幕在线| 97av在线播放| 一区二区三区视频观看| 麻豆乱码国产一区二区三区| 国产精品com| 日韩免费在线视频| 国产精品成人观看视频国产奇米| 92国产精品视频| 国产精品福利片| 亚洲男人天堂古典| 中文字幕日韩高清| 欧美成人精品影院| 日韩va亚洲va欧洲va国产| 亚洲视频第一页| 久久国产精品久久久久久久久久| 亚洲美女性视频| 97国产精品人人爽人人做| 亚洲欧洲第一视频| 国产精品精品一区二区三区午夜版| 国产精品视频久久久久| 中文字幕久久亚洲| 欧美美女18p| 插插插亚洲综合网| 欧美黑人一级爽快片淫片高清| 久久精品国产99国产精品澳门| 97久久精品在线| 韩国精品美女www爽爽爽视频| 日韩视频亚洲视频| 97在线精品国自产拍中文| 久久久久久久久久久久久久久久久久av| 国产精品第8页| 北条麻妃久久精品| 国产精品久久一区| 欧美在线视频免费观看| 国产精品视频在线播放| 日韩电影免费观看在线观看| 久久九九精品99国产精品| 国产精品久久久久久久久久小说| 美女久久久久久久久久久| 国产婷婷97碰碰久久人人蜜臀| 日韩亚洲国产中文字幕| 欧美日韩中文字幕| 欧美国产日韩二区| 国产精品久久久久7777婷婷| 久久婷婷国产麻豆91天堂| 亚洲xxxxx电影| 欧美在线激情网| 中文字幕最新精品| 亚洲一区第一页| 国产日韩欧美在线| 欧美另类交人妖| 欧美性受xxxx白人性爽| 欧美在线视频一区| 91伊人影院在线播放| 亚洲美女又黄又爽在线观看| 国产成人极品视频| 国产精品久久99久久| 疯狂欧美牲乱大交777| 日韩经典中文字幕在线观看| 国产亚洲欧洲高清一区| 91久久国产婷婷一区二区| 国产精品9999| 国产日韩欧美影视| 国产精品日韩一区| 午夜精品一区二区三区视频免费看| 欧美日韩国产中文字幕| www.亚洲一二| 国产精品毛片a∨一区二区三区|国| 欧美激情第三页| 日韩在线激情视频| 8090成年在线看片午夜| 国内精品久久久久影院 日本资源| 亚洲精品国产suv| 情事1991在线| 欧美最近摘花xxxx摘花| 国产成人高潮免费观看精品| 98视频在线噜噜噜国产| 自拍偷拍免费精品| 亚洲精品wwww| 国产精品久久久久久久久男| 日韩资源在线观看| 亚洲图片在区色| 国产性猛交xxxx免费看久久| 亚洲欧美国产精品专区久久| 久99九色视频在线观看| 91精品国产成人| 日韩欧美a级成人黄色| 97色在线播放视频|