leetcode No117. Populating Next Right Pointers in Each Node II
来源:互联网 发布:人肉软件 app 编辑:程序博客网 时间:2024/06/06 11:02
Question
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
和leetcode No116. Populating Next Right Pointers in Each Node不同,二叉树不再是完全二叉树
Algorithm
leetcode No116. Populating Next Right Pointers in Each Node解法:
http://blog.csdn.net/u011391629/article/details/52415154
这题有两种解法:
解法一:是延续leetcode No116. Populating Next Right Pointers in Each Node的思路,根据上一层的next信息求解下一层,可以申请一个节点作为这一层的头结点,这样方面知道下一层的头结点
解法二:是二叉树按层遍历,pre结点保存上一个结点信息,然后把结点接起来。
Accepted Code
解法一:
class Solution {public: void connect(TreeLinkNode *root) { if(root==NULL) return; while(root!=NULL){ TreeLinkNode* nextLevel=new TreeLinkNode(-1); //for record next level Node TreeLinkNode* cur=nextLevel; while(root!=NULL){ if(root->left!=NULL){ cur->next=root->left; cur=cur->next; } if(root->right!=NULL){ cur->next=root->right; cur=cur->next; } root=root->next; } root=nextLevel->next; } }};
解法二:
class Solution {public: void connect(TreeLinkNode *root) { if(root==NULL) return; while(root!=NULL){ TreeLinkNode* nextLevel=new TreeLinkNode(-1); //for record next level Node TreeLinkNode* cur=nextLevel; while(root!=NULL){ if(root->left!=NULL){ cur->next=root->left; cur=cur->next; } if(root->right!=NULL){ cur->next=root->right; cur=cur->next; } root=root->next; } root=nextLevel->next; } }};
- leetcode No117. Populating Next Right Pointers in Each Node II
- 【LeetCode】Populating Next Right Pointers in Each Node Populating Next Right Pointers in Each Node II
- LeetCode Populating Next Right Pointers in Each Node II
- [Leetcode] Populating Next Right Pointers in Each Node II
- [LeetCode] Populating Next Right Pointers in Each Node II
- leetcode 79: Populating Next Right Pointers in Each Node II
- [Leetcode] Populating Next Right Pointers in Each Node ii
- leetcode Populating Next Right Pointers in Each Node II
- 【leetcode】Populating Next Right Pointers in Each Node II
- [Leetcode]Populating Next Right Pointers in Each Node II
- [leetcode] Populating Next Right Pointers in Each Node II
- LeetCode-Populating Next Right Pointers in Each Node II
- LeetCode - Populating Next Right Pointers in Each Node II
- [LeetCode]Populating Next Right Pointers in Each Node II
- leetcode Populating Next Right Pointers in Each Node II
- LeetCode | Populating Next Right Pointers in Each Node II
- [leetcode]Populating Next Right Pointers in Each Node II
- 【LeetCode OJ】Populating Next Right Pointers in Each Node II
- 2 浅谈Web开发中的“前后端分离”
- C语言来实现字符串反转 只有单词顺序反转,单词里的字母不反转
- java 插入背景图片的三种方法
- 《算法》笔记-2.5 应用
- 如何在mac上配置vsftpd
- leetcode No117. Populating Next Right Pointers in Each Node II
- Java语言基础——数据类型与数据类型转换
- PHP上传文件
- C语言主要应用领域,C和C++的区别,自上向下和自下向上设计思想
- 【深度学习笔记002 神经网络与主流框架】
- mt3
- 部署描述文件web.xml解析(五) 声明过滤器
- 【Struts2】Session的获取
- Windows10 和 Ubuntu 16.04 双系统 系统时间不统一解决