116. Populating Next Right Pointers in Each Node(unsolved)
来源:互联网 发布:和平网络电视频道地址 编辑:程序博客网 时间:2024/05/01 02:30
Given a binary tree
struct TreeLinkNode { TreeLinkNode *left; TreeLinkNode *right; TreeLinkNode *next;}
Populate each next pointer to point to its next right node. If there is no next right node, the next pointer should be set to NULL.
Initially, all next pointers are set to NULL.
Note:
You may only use constant extra space.
You may assume that it is a perfect binary tree (ie, all leaves are at the same level, and every parent has two children).
For example,
Given the following perfect binary tree,
1
/ \
2 3
/ \ / \
4 5 6 7
After calling your function, the tree should look like:
1 -> NULL
/ \
2 -> 3 -> NULL
/ \ / \
4->5->6->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==NULL) return; auto pre=root; while(pre->left) { auto cur=pre; while(cur) { cur->left->next=cur->right; if(cur->next) cur->right->next=cur->next->left; cur=cur->next; } pre=pre->left; } }};
二刷时是这么做的:
用到了递归,然后都是从最左边往右传递
/** * 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 ; return solve(root); } void solve(TreeLinkNode *root){ if(!root) return; TreeLinkNode *cur=root ; while(cur){ if(cur->left) {cur->left->next=cur->right;} if(cur->right&&cur->next) {cur->right->next=cur->next->left;} cur=cur->next; } solve(root->left); }};};
0 0
- 116. Populating Next Right Pointers in Each Node(unsolved)
- 117. Populating Next Right Pointers in Each Node II(unsolved)
- Populating Next Right Pointers in Each Node
- Populating Next Right Pointers in Each Node
- Populating Next Right Pointers in Each Node
- Populating Next Right Pointers in Each Node
- Populating Next Right Pointers in Each Node
- Populating Next Right Pointers in Each Node
- Populating Next Right Pointers in Each Node
- Populating Next Right Pointers in Each Node
- Populating Next Right Pointers in Each Node
- Populating Next Right Pointers in Each Node
- Populating Next Right Pointers in Each Node
- Populating Next Right Pointers in Each Node
- Populating Next Right Pointers in Each Node
- Populating Next Right Pointers in Each Node
- Populating Next Right Pointers in Each Node
- Populating Next Right Pointers in Each Node
- 两种“两数互换的方式”
- java HotSpot虚拟机垃圾回收优化(一、Introduction)
- @TransactionConfiguration过时与替代写法
- computer-database 项目需求提测
- 使用asm.jar将Android手机屏幕投影到电脑
- 116. Populating Next Right Pointers in Each Node(unsolved)
- 关于typedef的用法小结
- 回炉重造,第七话:初探php函数
- peth0:RX bytes:4226556 (4.0 MiB) TX bytes:4226556 (4.0 MiB)
- 2015年蓝桥杯省赛C/C++ A组 垒骰子
- CentOS6.0系统安装JDK
- Lecture3 Linear and Logistic Regression
- 前端开源项目周报0321
- C++深度解析:学习笔记(1)