国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

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

LintCode 11 二叉查找樹中搜索區間

2019-11-08 18:38:37
字體:
來源:轉載
供稿:網友

題目:searchRange


要求:

給定兩個值 k1 和 k2(k1 < k2)和一個二叉查找樹的根節點。找到樹中所有值在 k1 到 k2 范圍內的節點。即打印所有x (k1 <= x <= k2) 其中 x 是二叉查找樹的中的節點值。返回所有升序的節點值。

樣例:

如果有 k1 = 10 和 k2 = 22, 你的程序應該返回 [12, 20, 22]. 20 / / 8 22 / /4 12

算法要求:

解題思路:

因為要求的是搜索區間,而不是固定的值,查找跟普通的二叉樹查找差不多,只是需要限定范圍。

算法如下:

vector<int> searchRange(TreeNode* root, int k1, int k2) { vector<int> vec; if (root == NULL) { return vec; } stack<TreeNode*> s; TreeNode *p = root; while (p != NULL || !s.empty()) { while (p != NULL) { s.push(p); if (p->val >= k1) { p = p->left; } else { p = NULL; } } if (!s.empty()) { p =s.top(); s.pop(); if (p->val <= k2 && p->val >=k1) { vec.push_back(p->val); } if (p->val > k2) { p = NULL; } else { p = p->right; } } } }
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 平顶山市| 兖州市| 南漳县| 海兴县| 宕昌县| 绥芬河市| 南通市| 南部县| 宜君县| 嘉峪关市| 无极县| 龙胜| 云南省| 赫章县| 永城市| 金湖县| 八宿县| 方城县| 朝阳县| 措勤县| 西藏| 德庆县| 肥乡县| 新野县| 六枝特区| 宁晋县| 南京市| 新津县| 西青区| 锡林浩特市| 祁门县| 沾益县| 尉犁县| 台中市| 卓尼县| 景洪市| 北碚区| 寻甸| 蓬莱市| 平阳县| 新闻|