当前位置: 首页 > news >正文

Leetcode 117: Populating Next Right Pointers in Each Node II

Follow up for problem "Populating Next Right Pointers in Each Node".

What if the given tree could be any binary tree? Would your previous solution still work?

Note:

  • You may only use constant extra space.

 

For example,
Given the following binary tree,

         1
       /  \
      2    3
     / \    \
    4   5    7

 

After calling your function, the tree should look like:

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


Note: must process right tree first.
 1 /**
 2  * Definition for binary tree with next pointer.
 3  * struct TreeLinkNode {
 4  *  int val;
 5  *  TreeLinkNode *left, *right, *next;
 6  *  TreeLinkNode(int x) : val(x), left(NULL), right(NULL), next(NULL) {}
 7  * };
 8  */
 9 class Solution {
10 public:
11     void connect(TreeLinkNode *root) {
12         if (root == NULL) return;        
13         
14         if (root->left != NULL && root->right != NULL) root->left->next = root->right;
15         
16         TreeLinkNode* cur = root->right != NULL ? root->right : root->left;
17         
18         if (cur != NULL)
19         {
20             TreeLinkNode* next = root->next;
21             
22             while (next != NULL)
23             {
24                 if (next->left != NULL)
25                 {
26                     cur->next = next->left;
27                     break;
28                 }
29                 
30                 if (next->right != NULL)
31                 {
32                     cur->next = next->right;
33                     break;
34                 }
35                 
36                 next = next->next;
37             }
38         }
39         
40         connect(root->right);
41         connect(root->left);
42     }
43 };

 

转载于:https://www.cnblogs.com/liangmou/p/7864204.html

相关文章:

  • js判断值对否为空
  • windows关闭aslr办法
  • YIT-CTF—社工类
  • jquery 怎么判断当前按钮是否是disabled 属性
  • 数据库的设计原则
  • HttpContext
  • js获取上传文件内容,ajax提交
  • “2017面向对象程序设计(Java)第十三周学习总结”存在问题的反馈及本周教学安排...
  • Python相关分析—一个金融场景的案例实操
  • hadoop入门
  • 如何将Win7做为NTP服务器
  • linux内存慢性扼杀
  • 命令行下显示mnist中图片的问题
  • webpack 图片的打包
  • git过滤提交文件
  • (三)从jvm层面了解线程的启动和停止
  • Akka系列(七):Actor持久化之Akka persistence
  • C++回声服务器_9-epoll边缘触发模式版本服务器
  • create-react-app做的留言板
  • iOS仿今日头条、壁纸应用、筛选分类、三方微博、颜色填充等源码
  • node入门
  • vue和cordova项目整合打包,并实现vue调用android的相机的demo
  • 从setTimeout-setInterval看JS线程
  • 第13期 DApp 榜单 :来,吃我这波安利
  • 短视频宝贝=慢?阿里巴巴工程师这样秒开短视频
  • 记录:CentOS7.2配置LNMP环境记录
  • 适配iPhoneX、iPhoneXs、iPhoneXs Max、iPhoneXr 屏幕尺寸及安全区域
  • 我看到的前端
  • 想晋级高级工程师只知道表面是不够的!Git内部原理介绍
  • 学习JavaScript数据结构与算法 — 树
  • nb
  • media数据库操作,可以进行增删改查,实现回收站,隐私照片功能 SharedPreferences存储地址:
  • MyCAT水平分库
  • 蚂蚁金服CTO程立:真正的技术革命才刚刚开始
  • ​软考-高级-系统架构设计师教程(清华第2版)【第15章 面向服务架构设计理论与实践(P527~554)-思维导图】​
  • ​学习一下,什么是预包装食品?​
  • #图像处理
  • #我与Java虚拟机的故事#连载02:“小蓝”陪伴的日日夜夜
  • ${factoryList }后面有空格不影响
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第2节(共同的基类)
  • (力扣记录)235. 二叉搜索树的最近公共祖先
  • (十八)devops持续集成开发——使用docker安装部署jenkins流水线服务
  • (数位dp) 算法竞赛入门到进阶 书本题集
  • (转)Android中使用ormlite实现持久化(一)--HelloOrmLite
  • .[backups@airmail.cc].faust勒索病毒的最新威胁:如何恢复您的数据?
  • .NET 4.0网络开发入门之旅-- 我在“网” 中央(下)
  • .NET Core中的去虚
  • .NET处理HTTP请求
  • .net对接阿里云CSB服务
  • @EventListener注解使用说明
  • @GetMapping和@RequestMapping的区别
  • @media screen 针对不同移动设备
  • @Transaction注解失效的几种场景(附有示例代码)
  • [<事务专题>]
  • [04] Android逐帧动画(一)