二叉樹的后繼節(jié)點(diǎn)

struct rbtree* successor(struct rbtree *node) {
    if (!node) return NULL;
    if (node->right) {
        /* 右子樹的最左子樹 */
        node = node->right;
        while (node->left) node = node->left;
        return node;
    } else {
        /* 向上直到當(dāng)前節(jié)點(diǎn)是其父節(jié)點(diǎn)的左子樹(后繼為父節(jié)點(diǎn))
           或者父節(jié)點(diǎn)為NULL(此時(shí)后繼節(jié)點(diǎn)不存在返回NULL) */
        struct rbtree *parent = _rb_parentof(node);
        while (parent && node == parent->right) {
            node = parent;
            parent = _rb_parentof(node);
        }
        return parent;
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
禁止轉(zhuǎn)載,如需轉(zhuǎn)載請通過簡信或評論聯(lián)系作者。

友情鏈接更多精彩內(nèi)容