leetcode Populating Next Right Pointers in Each Node 树 队列应用
来源:互联网 发布:淘宝店名叫什么好 编辑:程序博客网 时间:2024/06/03 06:25
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题目改了下一般树的数据结构,加了个next指针,意思是把每行用next串接起来,并且是个满二叉树。看到每一行就想到层序遍历,既然是满二叉树,那每层开始肯定是有规律的,所以只需要一个队列就行了,还需要用pre指针记录上个节点,用一个count计数器,判断是否是每层的头,如果不是头则把现在这个节点接到pre后面。
class Solution {public:void connect(TreeLinkNode *root) {if (root == NULL) return;queue<TreeLinkNode *>Q;Q.push(root);int count = 0,up=0;//up表示次方,因为每层的头部就是2的up次方TreeLinkNode *pre=NULL, *node=NULL;while(!Q.empty()){count++;pre = node;node = Q.front();Q.pop();if (node->left) Q.push(node->left);//左孩子入队列if (node->right) Q.push(node->right);//右孩子入队列if (count != pow(2, up))//判断是否是每一层的开头,如果不是则连接到pre后面pre->next = node;elseup++;}}};
0 0
- 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 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
- fn:split(string, separator) 具体使用方法
- [Leetcode]-Add Binary
- H5大会之后,未来指向何方?
- JSTL(fn函数)
- 优化SQL查询:如何写出高性能SQL语句
- leetcode Populating Next Right Pointers in Each Node 树 队列应用
- 安卓应用开发实战:[3]修改安卓应用程序图标
- java.lang.IllegalStateException: Cannot map handler
- FM 模块学习-----耳机(天线)相关处理
- Application类 的使用 ,设置全局变量
- C#多线程系列
- Linux Shell脚本面试问题大全
- Mongodb的windows服务安装和卸载
- 利用QtGraphicalEffects来使得自己的图像显示更加生动