久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

?LeetCode刷題實戰(zhàn)285:二叉搜索樹中的順序后繼

 程序IT圈 2021-06-05
算法的重要性,,我就不多說了吧,想去大廠,,就必須要經(jīng)過基礎(chǔ)知識和業(yè)務邏輯面試+算法面試,。所以,為了提高大家的算法能力,這個公眾號后續(xù)每天帶大家做一道算法題,,題目就從LeetCode上面選 ,!

今天和大家聊的問題叫做 二叉搜索樹中的中序后繼,我們先來看題面:
https:///problems/inorder-successor-in-bst/

Given a binary search tree and a node in it, find the in-order successor of that node in the BST.

The successor of a node p is the node with the smallest key greater than p.val.

給你一個二叉搜索樹和其中的某一個結(jié)點,,請你找出該結(jié)點在樹中順序后繼的節(jié)點,。結(jié)點 p 的后繼是值比 p.val 大的結(jié)點中鍵值最小的結(jié)點。

示例

輸入: root = [2,1,3], p = 1
輸出: 2
解析: 這里 1 的順序后繼是 2,。
請注意 p 和返回值都應是 TreeNode 類型,。

解題

這道題讓我們求二叉搜索樹的某個節(jié)點的中序后繼節(jié)點,那么根據(jù) BST 的性質(zhì)知道其中序遍歷的結(jié)果是有序的,,博主最先用的方法是用迭代的中序遍歷方法,,然后用一個 bool 型的變量b,初始化為 false,,進行中序遍歷,,對于遍歷到的節(jié)點,首先看如果此時b已經(jīng)為 true,,說明之前遍歷到了p,,那么此時返回當前節(jié)點,如果b仍為 false,,看遍歷到的節(jié)點和p是否相同,,如果相同,此時將b賦為 true,,那么下一個遍歷到的節(jié)點就能返回了,,參見代碼如下:

class Solution {
public:
    TreeNode* inorderSuccessor(TreeNode* root, TreeNode* p) {
        stack<TreeNode*> s;
        bool b = false;
        TreeNode *t = root;
        while (t || !s.empty()) {
            while (t) {
                s.push(t);
                t = t->left;
            }
            t = s.top(); s.pop();
            if (b) return t;
            if (t == p) b = true;
            t = t->right;
        }
        return NULL;
    }
};


好了,今天的文章就到這里,,如果覺得有所收獲,,請順手點個在看或者轉(zhuǎn)發(fā)吧,你們的支持是我最大的動力 ,。

上期推文:

LeetCode1-280題匯總,,希望對你有點幫助!

LeetCode刷題實戰(zhàn)281:鋸齒迭代器

LeetCode刷題實戰(zhàn)282:給表達式添加運算符

LeetCode刷題實戰(zhàn)283:移動零

LeetCode刷題實戰(zhàn)284:頂端迭代器

    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多