116. Populating Next Right Pointers in Each Node
来源:互联网 发布:管道安装设计软件 编辑:程序博客网 时间:2024/05/21 05:57
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
Solution 1
public static void connect2(TreeLinkNode root) {if(root == null){ return; } TreeLinkNode pre = root; TreeLinkNode cur = null; while(pre.left != null){ cur = pre; while(cur != null){ cur.left.next = cur.right; if(cur.next != null){ cur.right.next = cur.next.left; } cur = cur.next; } pre = pre.left; } }//same ideapublic void connect22(TreeLinkNode root) { while(root != null && root.left != null) { TreeLinkNode cur = root; while(cur != null) { cur.left.next = cur.right; cur.right.next = cur.next == null ? null : cur.next.left; cur = cur.next; } root = root.left; } }
public void connect3(TreeLinkNode root) { if(root == null || root.left == null) return; connectNodes(root.left, root.right); } public void connectNodes(TreeLinkNode node1, TreeLinkNode node2) { node1.next = node2; if(node1.left != null) { connectNodes(node1.left, node1.right); connectNodes(node1.right, node2.left); connectNodes(node2.left, node2.right); } }
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
- Android控件之ProgressBar
- 剑指offer之面试题:查找和排序
- Android控件之WebView
- Fragment 基础详解
- Struts中错误: No result defined for action
- 116. Populating Next Right Pointers in Each Node
- 实现Fragment与Activity通信
- Potato项目文档(3)
- Android之 Viewpager
- 258.[LeetCode]Add Digits
- 【Leetcode】:242. Valid Anagram问题 in Go语言
- Viewpager使用FragmentAdapter
- 类库使用记录,个人使用,以便查阅
- 自学Android开发日志