CODE 16: Populating Next Right Pointers in Each Node II

本文介绍了一种在二叉树中填充每个节点的Next指针的方法,使得同一层的所有节点通过Next指针连接起来。文章提供了一个使用广度优先搜索(BFS)的解决方案,该方案仅使用常数额外空间。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

	public void connect(TreeLinkNode root) {
		// Start typing your Java solution below
		// DO NOT write main() function
		if (null == root) {
			return;
		}
		bfs(root);
	}

	private void bfs(TreeLinkNode root) {
		Queue<TreeLinkNode> queue = new LinkedList<TreeLinkNode>();
		queue.offer(root);
		int queueNumber = 1;
		int layerNumber = 0;
		TreeLinkNode tempNode = null;
		while (!queue.isEmpty()) {
			tempNode = queue.poll();
			queueNumber--;
			if (null != tempNode.left) {
				queue.offer(tempNode.left);
				layerNumber++;
			}
			if (null != tempNode.right) {
				queue.offer(tempNode.right);
				layerNumber++;
			}
			if (queueNumber != 0) {
				tempNode.next = queue.peek();
			} else {
				tempNode.next = null;
			}

			if (queueNumber == 0 && layerNumber != 0) {
				queueNumber = layerNumber;
				layerNumber = 0;
			}
		}
	}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值