二叉树的后继节点

简介: 二叉树的后继节点

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;
}


目录
相关文章
|
11月前
【Leetcode -872.叶子相似的树 -993.二叉树的堂兄弟节点】
【Leetcode -872.叶子相似的树 -993.二叉树的堂兄弟节点】
34 0
|
4月前
|
存储
二叉树详解(深度优先遍历、前序,中序,后序、广度优先遍历、二叉树所有节点的个数、叶节点的个数)
二叉树详解(深度优先遍历、前序,中序,后序、广度优先遍历、二叉树所有节点的个数、叶节点的个数)
|
3月前
【树 - 平衡二叉树(AVL)】F(n)=F(n-1)+F(n-2)+1 这个类似于一个递归的数列,1是根节点,F(n-1)是左子树的节点数量,F(n-2)是右子树的节点数量
【树 - 平衡二叉树(AVL)】F(n)=F(n-1)+F(n-2)+1 这个类似于一个递归的数列,1是根节点,F(n-1)是左子树的节点数量,F(n-2)是右子树的节点数量
|
4月前
|
NoSQL 容器 消息中间件
二叉搜索树查询/插入/求前驱/求后继/删除
二叉搜索树查询/插入/求前驱/求后继/删除
二叉搜索树查询/插入/求前驱/求后继/删除
|
10月前
二叉树子树结点个数
二叉树子树结点个数
47 0
|
算法 JavaScript 开发者
寻找二叉树的下一个节点
寻找二叉树的下一个节点
寻找二叉树的下一个节点
|
小程序 前端开发 程序员
获取链表中倒数第K个节点
获取链表中倒数第K个节点
获取链表中倒数第K个节点
|
存储 JavaScript 前端开发
在二叉树中找到一个节点的后继节点
在二叉树中找到一个节点的后继节点
155 0
|
算法 前端开发
二叉树的堂兄弟节点
🎈今天给大家带来的是算法练习,题目为二叉树的堂兄弟节点。
114 1