5.1.10 Populating Next Right Pointers in Each Node II
2015-06-05 16:49
423 查看
Notes: | |
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 | |
Solution: 1. iterative way with CONSTANT extra space. | |
2. iterative way + queue. Contributed by SUN Mian(孙冕). | |
3. recursive solution. | |
*/ | |
/** | |
* 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) {} | |
* }; | |
*/ |
void connect_2(TreeLinkNode *root) { if (root == NULL) return; queue<TreeLinkNode *> q; q.push(root); q.push(NULL); TreeLinkNode *last = NULL; TreeLinkNode dummy(-1); TreeLinkNode *pre = &dummy; while (!q.empty()) { TreeLinkNode *node = q.front(); q.pop(); if (node == NULL) { if (dummy.next) q.push(NULL); pre = &dummy; pre->next = NULL; } else { pre->next = node; pre = pre->next; if (node->left) q.push(node->left); if (node->right) q.push(node->right); } } }
相关文章推荐
- node-glob学习
- 用NODEJS处理EXCEL文件导入导出,文件上传
- iOS 用GDataXMLNode创建和解析XML
- LeetCode_19---Remove Nth Node From End of List
- 【NodeJS】---express配置ejs mongoose route等
- nodejs安装及环境配置
- leetcode 19 -- Remove Nth Node From End of List
- nodePPT 这可能是迄今为止最好的网页版PPT
- NodeJs安装教程
- 用 node 实现仿微信风格的 token 获取接口
- Node.js 学习资源总结
- Use Node.js DDP Client on Arduino Yun to Access Meteor Server
- Reverse Nodes in k-Group
- nodejs(npm)——创建全局链接
- 一个强大的UI node 抽象
- nodejs——require单次加载
- nodejs创建包(建立nodejs工程)
- nodejs exports和module.exports区别
- Reverse Nodes in k-Group
- DrawNode遮罩