Populating Next Right Pointers in Each Node
来源:互联网 发布:梦里花落知多少百度云 编辑:程序博客网 时间:2024/04/30 00:17
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 linkSibling(TreeLinkNode * node){
if (node->left && node->right){
node->left->next = node->right;
linkSibling(node->left);
linkSibling(node->right);
}
}
void linkCousin(TreeLinkNode * node){
if (node->right && node->next){
node->right->next = node->next->left;
}
if (node->left)
linkCousin(node->left);
if (node->right)
linkCousin(node->right);
}
void setRight2NULL(TreeLinkNode * node){
if (node){
node->next = NULL;
setRight2NULL(node->right);
}
}
void connect(TreeLinkNode *root) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
if (root==NULL)
return;
else if (root->left == NULL && root->right == NULL){
root->next = NULL;
return;
}
// link sibling
linkSibling(root);
// link cousin
linkCousin(root);
// set most right
setRight2NULL(root);
}
};
0 0
- 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
- Populating Next Right Pointers in Each Node
- Populating Next Right Pointers in Each Node
- Single Number II
- Android开发Activity之间传递及获取数据
- ActionBar隐藏修改图标和标题
- Evaluate Reversed Polish Notation
- ActionBar自定义背景
- Populating Next Right Pointers in Each Node
- Remove Duplicates from Sorted List
- python--文件操作
- Climbing Stairs
- 如何使用java synchronized进行线程同步
- 从零单排c++ primer(17)
- Nginx 多站点配置
- SQL server 错误代码对照表
- Okay 来了