树——populating-next-right-pointers-in-each-node(层序遍历变型)
来源:互联网 发布:路由器劫持软件 编辑:程序博客网 时间:2024/06/07 05:24
题目:
节点中多了一个next引用指向该节点的右边节点,若没有右边节点则next=null,且只能使用O(1)辅助空间。
struct TreeLinkNode{
TreeLinkNode *left; TreeLinkNode *right; TreeLinkNode *next; }
例如:
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引用赋值.
代码如下:
/** * Definition for binary tree with next pointer. * public class TreeLinkNode { * int val; * TreeLinkNode left, right, next; * TreeLinkNode(int x) { val = x; } * } */import java.util.*;public class Solution { public void connect(TreeLinkNode root) { if(root == null) return; LinkedList<TreeLinkNode> list=new LinkedList(); list.add(root); int cur=1;//list中存储的二叉树当前层节点数; int next=0;//list中存储的二叉树下一层节点数; while(list.size()!=0) { TreeLinkNode node=list.remove(0); cur--; if(cur!=0)//若node右边有节点,next指向右边节点; { node.next=list.get(0); }else//若node右边无节点,next指向null; { node.next=null; } if(node.left!=null) { list.add(node.left); next++; } if(node.right!=null) { list.add(node.right); next++; } if(cur == 0)//当前层遍历结束,遍历下一层; { cur=next; next=0; } } }}
节点中多了一个next引用指向该节点的右边节点,若没有右边节点则next=null.
0 0
- 树——populating-next-right-pointers-in-each-node(层序遍历变型)
- LeetCode——Populating Next Right Pointers in Each Node
- LeetCode——Populating Next Right Pointers in Each Node
- LeetCode——Populating Next Right Pointers in Each Node
- Leetcode——populating-next-right-pointers-in-each-node
- Algorithms—116.Populating Next Right Pointers in Each Node
- LeetCode116—Populating Next Right Pointers in Each Node
- LeetCode117—Populating Next Right Pointers in Each Node II
- populating-next-right-pointers-in-each-node-ii(二叉树每层用指针链接)
- DFS&遍历 Populating Next Right Pointers in Each Node
- 遍历 Populating Next Right Pointers in Each Node II
- level 遍历116. Populating Next Right Pointers in Each Node
- [leetcode 116] 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
- c++数字和字符串的转换
- OpenCL概述 续篇
- 11_JSP 客户端请求
- 06:月度开销OJ
- SlidingPaneLayout双栏滑动
- 树——populating-next-right-pointers-in-each-node(层序遍历变型)
- 12_JSP 服务器响应
- Java内部类的使用小结
- GPU架构
- Android/linux 平台下使用 i2c-tools调试IIC方法
- 通过调用门进行控制转移 ——《x86汇编语言:从实模式到保护模式》读书笔记29
- 07:和为给定数OJ
- python的内置函数
- C++作业5