117. Populating Next Right Pointers in Each Node II(隊列、二叉樹)

package Tree;

import java.util.LinkedList;
import java.util.Queue;

public class Connect_117 {
	class Node {
		public int val;
		public Node left;
		public Node right;
		public Node next;

		public Node() {
		}

		public Node(int _val) {
			val = _val;
		}

		public Node(int _val, Node _left, Node _right, Node _next) {
			val = _val;
			left = _left;
			right = _right;
			next = _next;
		}
	}

	public Node connect(Node root) {
		if(root==null) {
			return root;
		}
		// 每一行的節點用隊列存儲起來
		Queue<Node> queue = new LinkedList<>();
		queue.offer(root);
		while (!queue.isEmpty()) {
			Node pre = null;
			int size=queue.size();
			for (int i = 0; i < size; i++) {
				// 每一行串起來
				Node cur = queue.poll();
				if (i > 0) {
					pre.next = cur;
				}
				pre = cur;

				// 下一行存入隊列
				if (cur.left != null) {
	                queue.offer(cur.left);
	            }
	            if (cur.right != null) {
	                queue.offer(cur.right);
	            }
			}

		}

		return root;

	}

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章