博客
关于我
LeetCode 116填充每个节点的下一个右侧结点指针
阅读量:340 次
发布时间:2019-03-04

本文共 823 字,大约阅读时间需要 2 分钟。

为了解决这个问题,我们需要填充二叉树中每个节点的 next 指针,使其指向下一个右侧节点。我们需要在常量级额外空间内完成这个任务,这意味着我们不能使用额外的数据结构来存储节点信息。

方法思路

我们可以使用一种递归的方法来处理这个问题。具体步骤如下:

  • 初始化指针:从根节点开始,初始化指针 p 为根节点。
  • 遍历节点:在每次循环中,处理当前节点 p 的右边节点,并将 pnext 指针指向该右边节点。
  • 更新指针:将指针 p 更新为右边节点的左边节点,这样我们就可以处理下一层的最左边节点。
  • 终止条件:当 p 为空或 p 的左边节点为空时,终止循环。
  • 这种方法确保了我们能够在常量级额外空间内完成任务,因为我们只使用了几个指针变量,而没有存储整个层序结构。

    解决代码

    class Solution {    public Node* connect(Node* root) {        if (!root) return null;        Node* p = root;        while (p && p->left != null) {            p->next = p->right;            p = p->right->left;        }        return root;    }}

    代码解释

  • 初始化检查:首先检查根节点是否为空,如果为空则返回 null
  • 指针初始化:将指针 p 设为根节点 root
  • 循环处理:在 p 不为空且 p 的左边节点不为空的情况下,执行循环。
    • 设置下一个节点:将 pnext 指针指向 p 的右边节点。
    • 更新指针:将 p 更新为右边节点的左边节点,这样可以处理下一层的最左边节点。
  • 返回根节点:当循环终止时,返回根节点 root
  • 这种方法确保了每个节点的 next 指针都被正确填充,形成了一个链表结构,每个节点都指向下一个右侧节点。

    转载地址:http://dybr.baihongyu.com/

    你可能感兴趣的文章
    Jetson AGX Xavier硬件自启动
    查看>>
    网页实时显示已经运行了多少天 html+js
    查看>>
    判断移动端(手机)还是客户端(电脑)打开网页并跳转不同页面(首页)
    查看>>
    10分钟实现个人博客布置说说留言功能,Artitalk.js插件使用
    查看>>
    眼睛跟随鼠标转动的小黄人 html+css+js
    查看>>
    canvas贪吃蛇效果 html+css+js
    查看>>
    跟随鼠标移动的星星✩直接在页面引用✧✧✧
    查看>>
    poj 3660 (floyd)
    查看>>
    8086汇编语言21键电子琴
    查看>>
    找密码
    查看>>
    Python初级知识总结
    查看>>
    python|画图1(蛇)
    查看>>
    婚姻稳定匹配问题
    查看>>
    C++数据类型,运算符,注释
    查看>>
    C++语句,函数,标准输入输出
    查看>>
    平均年龄,,数字求和
    查看>>
    简单的字符串操作(注意要点)
    查看>>
    统计字符数
    查看>>
    C与C++区别
    查看>>
    JS 数组的 every()、some() 、filter()、findIndex() 、find()、map()方法
    查看>>