标签:binary tree level order queue
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:
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
与Populating Next Right Pointers in Each Node 基本一致 只是在向队列中加入子节点时要对左右节点分别判断 代码如下:
public class Solution { public void connect(TreeLinkNode root) { if(root==null) return ; int count=1; int level=0; Queue<TreeLinkNode> que =new LinkedList<TreeLinkNode>(); que.offer(root); while(que.isEmpty()!=true){ level=0; for(int i=0;i<count;i++){ root=que.peek(); que.poll(); if(i<count-1){ root.next=que.peek(); }else{ root.next=null; } if(root.left!=null){ que.offer(root.left); level++; } if(root.right!=null){ que.offer(root.right); level++; } } count=level; } } }
Populating Next Right Pointers in Each Node II
标签:binary tree level order queue
原文地址:http://blog.csdn.net/u012734829/article/details/42389677