给定一个二叉树

struct TreeLinkNode {TreeLinkNode *left;TreeLinkNode *right;TreeLinkNode *next;
}

填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL

初始状态下,所有 next 指针都被设置为 NULL

说明:

  • 你只能使用额外常数空间。
  • 使用递归解题也符合要求,本题中递归程序占用的栈空间不算做额外的空间复杂度。

示例:

给定二叉树,

     1/  \2    3/ \    \
4   5    7

调用你的函数后,该二叉树变为:

     1 -> NULL/  \2 -> 3 -> NULL/ \    \
4-> 5 -> 7 -> NULL

/**
 * Definition for binary tree with next pointer.
 * struct TreeLinkNode {
 *  int val;
 *  TreeLinkNode *left, *right, *next;
 *  TreeLinkNode(int x) : val(x), left(NULL), right(NULL), next(NULL) {}
 * };
 */
class Solution {
public:
    void connect(TreeLinkNode *root) {
        if (!root) return;
        TreeLinkNode *p = root->next;
        while (p) {
            if (p->left) {
                p = p->left;
                break;
            }
            if (p->right) {
                p = p->right;
                break;
            }
            p = p->next;
        }
        if (root->right) root->right->next = p; 
        if (root->left) root->left->next = root->right ? root->right : p; 
        connect(root->right);
        connect(root->left);
    }
};

117.填充同一层的兄弟节点II相关推荐

  1. 【每日一算法】填充同一层的兄弟节点

    微信改版,加星标不迷路! 每日一算法-填充同一层的兄弟节点 给定一个二叉树 struct TreeLinkNode {TreeLinkNode *left;TreeLinkNode *right;Tr ...

  2. 116. 填充同一层的兄弟节点

    116. 填充同一层的兄弟节点 给定一个二叉树 struct TreeLinkNode { TreeLinkNode *left; TreeLinkNode *right; TreeLinkNode ...

  3. 2.<tag-二叉树和层序遍历相关题>-lt.116. 填充每个节点的下一个右侧节点指针 + lt.117. 填充每个节点的下一个右侧节点指针 II 1

    lt.116. 填充每个节点的下一个右侧节点指针 [案例需求] [思路分析一, 迭代法] [代码实现] /* // Definition for a Node. class Node {public ...

  4. LeetCode 117. 填充每个节点的下一个右侧节点指针 II(递归循环)

    文章目录 1. 题目 2. 解题 2.1 递归 2.2 queue循环 2.3 利用next循环 1. 题目 填充它的每个 next 指针,让这个指针指向其下一个右侧节点.如果找不到下一个右侧节点,则 ...

  5. xpath 获取当前节点的父节点,兄弟节点的方法

    2019独角兽企业重金招聘Python工程师标准>>> xpath_input_exp_mark = '//label[contains(text(), "文本内容&quo ...

  6. CSS实现某元素hover时 所有兄弟节点样式改变

    2019独角兽企业重金招聘Python工程师标准>>> css 提供的兄弟节点选择器有两种 第一种:+  相邻兄弟选择器( li + li )只能选择与自己紧紧相连的身后的一个兄弟, ...

  7. JQUERY的父,子,兄弟节点查找方法

    jQuery.parent(expr)  找父亲节点,可以传入expr进行过滤,比如$("span").parent()或者$("span").parent(& ...

  8. 相对定位android,appium相对位置定位元素----父节点/兄弟节点定位

    appium相对位置定位元素----父节点/兄弟节点定位 发布时间:2020-06-30 05:51:41 来源:51CTO 阅读:5620 作者:niedongri 讲一下定位手机app上元素时定位 ...

  9. 总结获取原生JS(javascript)的父节点、子节点、兄弟节点

    关于原生JS获取节点,一直是个头疼的问题,而且调用方法的名字又贼长了,所以我选择用JQ,好像跑题了-- 话不多说看代码 获取父节点 及 父节点下所有子节点(兄弟节点) <ul><li ...

  10. js学习笔记15----子节点和兄弟节点的操作

    1.元素.firstChild : 只读属性,第一个子节点 标准下:会包含文本类型的子节点. 非标准下:只包含元素类型子节点. 元素.firstElementChild : 只读属性,第一个元素子节点 ...

最新文章

  1. DeFi 史上最大盗窃案:一个漏洞盗走价值 6 亿美元资产?现已归还近一半
  2. Squid配置二级代理(父代理)
  3. 关于 xml 库运行时的segmentation fault 问题
  4. mysql表的类型_浅谈MySQL表类型
  5. 中英对照 关于计算机的科技英语,《计算机专业英语》(中英文对照).pdf
  6. 【专访】首届腾讯社交广告“高校算法大赛”落幕 冠亚季军团队参赛心得精彩分享
  7. C++设计模式-Mediator中介者模式
  8. Python中的多线程与锁
  9. 数据库连接池——基本原理
  10. 地址规范化--城市三级联动(layui) (B)
  11. 什么是飞天?全球级大数据计算平台,自主研发!
  12. L2CAP的基本模式(basic mode)数据格式
  13. 大数据:阿里数据仓库建模及管理体系OneData什么是阿里onedata
  14. Avfoundation 相机指定裁剪区域
  15. Excel功能及实现
  16. 优漫动游平面设计的形式美
  17. 1497_费曼技巧之他人观
  18. 电脑服务器修改穿越火线不卡,windows10玩穿越火线画面不流畅怎么办
  19. VENC 通道属性配置参数理解
  20. 小程序实习生实现手机机型预约

热门文章

  1. IE7的CSS兼容性
  2. 使用ASP.NET Atlas ItemView控件显示集合中的单个数据
  3. sharding技术
  4. 浏览器加载、渲染过程总结
  5. Android官方开发文档Training系列课程中文版:线程执行操作之定义线程执行代码...
  6. Logback 深入分析
  7. 在 Visual Studio 2010 中配置SharpPcap
  8. html 强制占据一行,html – 如何强制内联div保持在同一行?
  9. mysql5.7 systemctl启动_CentOS 7上配置MySQL5.7开机自启动方法
  10. android x86显卡驱动,全系列显卡精简版纯驱动(Windows_6.x_VGA_Drivers_lite_x86x64)(2016.09.12)...