二叉树的后继节点

简介: 二叉树的后继节点

Successor node

问题

求二叉树里一个节点的后继节点

思路

判断情况:

节点有右子树:找右子树的最左节点

节点没有右子树:往上查找,但节点不能为父节点的左子树

实现

class Node
{
    public:
    Node* left;
    Node* right;
    Node* parent;
    Node():left(nullptr),right(nullptr),parent(nullptr){}   
};
Node* GetSuccessorNode(Node* root,Node* cur)
{
    if(!cur) return cur;
    if(cur->right) return GetLeftestNode(cur->right);
    Node* parent = cur->parent;
    while(parent != nullptr && parent->left != cur)
    {
        cur = parent;
        parent = cur->parent;
    }
    return parent;
}
Node* GetLeftestNode(Node* root)
{
    while(root->left)
    {
        root = root->left;
    }
    return root;
}


目录
相关文章
|
9月前
【Leetcode -872.叶子相似的树 -993.二叉树的堂兄弟节点】
【Leetcode -872.叶子相似的树 -993.二叉树的堂兄弟节点】
25 0
|
2月前
|
存储
二叉树详解(深度优先遍历、前序,中序,后序、广度优先遍历、二叉树所有节点的个数、叶节点的个数)
二叉树详解(深度优先遍历、前序,中序,后序、广度优先遍历、二叉树所有节点的个数、叶节点的个数)
|
2月前
|
存储 Python
链表中删除节点
链表中删除节点
|
12月前
|
数据安全/隐私保护
列出叶节点 (二叉树的建立和BFS)
列出叶节点 (二叉树的建立和BFS)
72 0
leetcode876.链表的中间节点
leetcode876.链表的中间节点
51 0
|
算法 JavaScript 开发者
寻找二叉树的下一个节点
寻找二叉树的下一个节点
寻找二叉树的下一个节点
|
小程序 前端开发 程序员
获取链表中倒数第K个节点
获取链表中倒数第K个节点
获取链表中倒数第K个节点
|
存储 JavaScript 前端开发
在二叉树中找到一个节点的后继节点
在二叉树中找到一个节点的后继节点
138 0
|
算法 前端开发
二叉树的堂兄弟节点
🎈今天给大家带来的是算法练习,题目为二叉树的堂兄弟节点。
106 1