Leetcode 116:填充同一层的兄弟节点

本文介绍了一种常数空间复杂度的二叉树节点链接方法,通过迭代实现,使用三个辅助变量完成层次遍历,建立节点间的next指针关系,实现了O(1)的空间复杂度。

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

问题

在这里插入图片描述

分析

递归很简单;
O(n)空间复杂度的迭代也很简单;
说一下常数空间复杂度的迭代实现:
在循环过程中,共有三个变量:root,指向当前根节点,用于将左右子树的next关系连接;
当前层:是root的子节点层;
tempNode,指向当前层的第一个节点;其next指针指向root层第一个节点的左节点;
currNode,指向当前需要确定next关系的节点;
该方法层次遍历树,借助root的next关系访问到该层的下一个节点;借助currNode的移动,建立next关系。
具体可以看代码。
时间复杂度:O(n)?(notsure,就是树的节点数吧)
空间复杂度:O(1)

代码

    public void connect3(TreeLinkNode root) {
    	//迭代实现 常数空间 抄袭别人的
    	if(root==null) return ;
    	while(root!=null){
    		TreeLinkNode tempNode=new TreeLinkNode(0);
    		TreeLinkNode currNode=tempNode;
    		while(root!=null){
    			if(root.left!=null){
    				currNode.next=root.left;
    				currNode=currNode.next;
    			}
    			if(root.right!=null){
    				currNode.next=root.right;
    				currNode=currNode.next;
    			}
    			root=root.next;
    		}
    		root=tempNode.next;
    	}
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值