leetcode 117 Populating Next Right Pointers in Each Node II

本文介绍了一种在任意二叉树中填充每个节点的下一个右侧指针的方法,并提供了一个使用常数额外空间的解决方案。

摘要生成于 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

Subscribe to see which companies asked this question


class Solution {
public:
	void connect(TreeLinkNode *root) {
		if(root == NULL) return;
		while(true) {
			TreeLinkNode *node=NULL, *temp=NULL;
			bool flag=false;

			for(; root!=NULL; root=root->next) {
				node = root->left;
				flag = false;
				if(node==NULL) {
					node = root->right;
					flag = true;
				}
				if(node!=NULL) break;
			}

			temp = node;
			int cnt=1;
			if(node==NULL) break;
			if(flag) {
				cnt++;
				root = root->next;
			}
			for(; root!=NULL; root=root->next) {

				if(cnt>1) {
					if(root->left!=NULL) {
						node->next = root->left;
						node = root->left;
					}
				}

				node->next = root->right;
				if(node->next!=NULL)
					node = node->next;
				cnt++;
			}

			root = temp;
		}

		return;
	}
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值