[LeetCode] 117. Populating Next Right Pointers in Each Node II Java
Posted BrookLearnData
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[LeetCode] 117. Populating Next Right Pointers in Each Node II Java相关的知识,希望对你有一定的参考价值。
题目:
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
题意及分析:给出棵树,将树的每层用next指针链接起来。和上一题不同的是这里是一棵随意的二叉树。这里可以使用一个节点保存每一层的第一个节点,然后遍历该层就行。具体看代码注释。
代码:
/** * Definition for binary tree with next pointer. * public class TreeLinkNode { * int val; * TreeLinkNode left, right, next; * TreeLinkNode(int x) { val = x; } * } */ public class Solution { public void connect(TreeLinkNode root) { while(root!=null){ TreeLinkNode tempChild = new TreeLinkNode(0); //记录下一层的首节点 TreeLinkNode curChild = tempChild; while (root!=null){ //遍历某一层的节点,并将该层节点的子节点从左到右添加到下一层中去 if(root.left!=null){ curChild.next=root.left; curChild=curChild.next; } if(root.right!=null){ curChild.next=root.right; curChild=curChild.next; } root = root.next; } root = tempChild.next; //将下一层的首节点装载到root,遍历下一层 } } }
以上是关于[LeetCode] 117. Populating Next Right Pointers in Each Node II Java的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode第117题—填充每个节点的下一个右侧节点指针II—Python实现
LeetCode 117:Populating Next Right Pointers in Each Node II
leetcode@ [116/117] Populating Next Right Pointers in Each Node I & II (Tree, BFS)