国产探花免费观看_亚洲丰满少妇自慰呻吟_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; } } } }
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宁津县| 墨玉县| 都匀市| 会泽县| 天祝| 两当县| 龙岩市| 宜君县| 镇赉县| 甘洛县| 四会市| 抚宁县| 广东省| 德清县| 温州市| 枣阳市| 射阳县| 本溪| 昭苏县| 吴江市| 安顺市| 大港区| 吉水县| 长子县| 上虞市| 抚远县| 上栗县| 婺源县| 无锡市| 寿光市| 大竹县| 齐齐哈尔市| 堆龙德庆县| 黎城县| 县级市| 莆田市| 长葛市| 长泰县| 弋阳县| 平和县| 肇源县|