[LeetCode] Populating Next Right Pointers in Each Node
来源:互联网 发布:网络推广薪资 编辑:程序博客网 时间:2024/05/21 23:48
题目:
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 || root -> left == NULL) { return; } root->left->next = root->right; if(root->next != NULL) { root->right->next = root->next->left; } connect(root->left); connect(root->right); return; }};
思路:
很棒的一道题,可以认为是先序遍历。
(1)根据题述:左孩子为空,则右孩子一定为空,所以左孩子为空,则return
(2)如果左孩子不为空,则右孩子一定不为空,所以链接左孩子和右孩子即可(左孩子的next赋值为右孩子)
(3)由于先序遍历,所以父节点的next比子节点的next先被设置,故父节点不同的两个子节点进行连接,就可以用到父节点的next,整题的精华便是:root->right->next = root->right
0 1
- 【LeetCode】Populating Next Right Pointers in Each Node Populating Next Right Pointers in Each Node II
- leetcode Populating Next Right Pointers in Each Node &&Populating Next Right Pointers in Each Node||
- LeetCode Populating Next Right Pointers in Each Node & Populating Next Right Pointers in Each Node I
- 【Leetcode】Populating Next Right Pointers in Each Node in JAVA
- LeetCode Populating Next Right Pointers in Each Node
- LeetCode Populating Next Right Pointers in Each Node II
- [Leetcode] Populating Next Right Pointers in Each Node
- LeetCode: Populating Next Right Pointers in Each Node
- [Leetcode] Populating Next Right Pointers in Each Node II
- [LeetCode] Populating Next Right Pointers in Each Node
- [LeetCode] Populating Next Right Pointers in Each Node II
- 【leetcode】 Populating Next Right Pointers in Each Node
- leetcode 78: Populating Next Right Pointers in Each Node
- leetcode 79: Populating Next Right Pointers in Each Node II
- Leetcode: Populating Next Right Pointers in Each Node
- [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
- Java使用memcached
- vim行内移动光标
- c++枚举转换为字符串
- 周鸿祎内部邮件:不要盲目把360看成巨头
- C\C++代码优化的27个建议
- [LeetCode] Populating Next Right Pointers in Each Node
- 【标题+关键词+描述】网站seo三个要点
- JAVA初学基本简单的程序----适合初学者(二)
- LeetCode: Pow(x, n) [049]
- NSProgress
- Java提高篇(二七)-----TreeMap
- 关于axis2.1.6与websphere7的包冲突问题的解决方案
- 安卓异步代理服务器客户端理解
- 九度 题目1503:二叉搜索树与双向链表