首页 > 其他分享 >JZ8 二叉树的下一个结点

JZ8 二叉树的下一个结点

时间:2024-04-22 22:12:44浏览次数:22  
标签:结点 next TreeLinkNode 二叉树 JZ8 nodes root 节点

image
image

image
image

#include <cstddef>
class Solution {
public:

    vector<TreeLinkNode*> nodes; 
    //用户得到的输入只有一个 子树根节点
    TreeLinkNode* GetNext(TreeLinkNode* pNode) {
        TreeLinkNode* root = pNode;
        
        //获取根节点
		//顺着next指针一直找就可以了,因为next只会从子节点指向根节点
        while(root->next )
            root = root->next;
        
        //中序遍历用nodes存储所有节点指针
        InOrder(root);
        int n = nodes.size();

        for(int i = 0; i<n-1;i++)
        {
            TreeLinkNode* cur = nodes[i];

            //将节点进行匹配
            if(pNode == cur)
            {
                //如果有匹配到给出的节点,则下一个节点即返回结果
                return nodes[i+1];
            }
        }
        //否则如果没有下一个节点则返回NULL
        return NULL;
    }

    //中序遍历
    void InOrder(TreeLinkNode* root)
    {
        if(root==NULL)
            return;
        InOrder(root->left);
        nodes.push_back(root);
        InOrder(root->right);
    }
};

标签:结点,next,TreeLinkNode,二叉树,JZ8,nodes,root,节点
From: https://www.cnblogs.com/H43724334/p/18151684

相关文章

  • JZ79 判断是不是平衡二叉树
    classSolution{public://求深度intdeep(TreeNode*root){if(root==NULL)return0;//求左右子树的深度intleft=deep(root->left);intright=deep(root->right);return......
  • 查找链表中倒数第k(k为正整数)个位置上的结点,查找成功输出该结点的data值,并返回1,否则只
    /********************************************************name:FindKNode* function:查找链表中倒数第k(k为正整数)个位置上的结点*查找成功输出该结点的data值,并返回1,否则只返回0*argument*@head:链表头结点的地......
  • 删除最小值结点
    /********************************************************name:DelTargetNode* function:删除单链表L(有头结点)中的一个最小值结点*argument*@L:链表头结点的地址**retval:None*author:Dazz*date:......
  • 删除链表中指定结点
    删除链表中指定结点/********************************************************name:DelTargetNode* function:删除链表中指定的结点*argument*@head:链表头结点的地址*@num:需要删除的第num个结点**retva......
  • 设计一个算法删除单链表L(有头节点)中的一个最小值结点
    数据结构链表笔试题:设计一个算法删除单链表L(有头节点)中的一个最小值结点。/****************************************************************** * filename : linkedlist.c* author : [email protected]* data : 2024/04/22* function : 删除单链表中的一个最小......
  • 设计一个算法删除单链表L(有头结点)中的一个最小值结点
    设计一个算法删除单链表L(有头结点)中的一个最小值结点/********************************************************************* 函数名称: LList_delatemin* 函数功能:删除单链表L(有头结点)中的一个最小值结点* 函数参数:* @a:*L*@b:*返回......
  • 假设该链表只给出了头指针 head。在不改变链表的前提下,请设计一个尽可能高效的算法,查
    假设该链表只给出了头指针head。在不改变链表的前提下,请设计一个尽可能高效的算法,查找链表中倒数第k(k为正整数)个位置上的结点。若查找成功,算法输出该结点的data值,并返回1;否则,只返回0。/********************************************************************* 函数名称......
  • 删除链表中最小的一个结点
    include<stdio.h>include<stdbool.h>include<stdlib.h>//指的是单向链表中的结点有效数据类型,用户可以根据需要进行修改typedefintDataType_t;//构造链表的结点,链表中所有结点的数据类型应该是相同的typedefstructLinkedList{DataType_tdata;//结点......
  • 删除链表中的尾部结点
    删除链表中的尾部结点/********************************************************name:DelTailNode* function:删除链表尾部结点*argument*@head:链表头结点的地址**retval:成功返回1,失败返回0*author:Dazz*......
  • 《渣男代码历险记》第五章:设计一个算法删除单链表L(有头结点)中的一个最小值结点
    为了删除单链表L中的一个最小值结点,我们可以遍历链表,找到最小值结点及其前驱结点,然后修改前驱结点的指针,使其指向最小值结点的下一个结点。以下是算法的解析和代码实现:初始化两个指针pre和cur,分别指向头结点和头结点的下一个结点。初始化一个变量min_val,用于存储当前最小值,将其......