四时宝库

程序员的知识宝库

Java经典算法:在每个节点中填充下一个右指针

给定以下完美的二叉树,


1个

/ \

2 3

///

4 5 6 7

调用函数后,树应如下所示:

1->空

/ \

2-> 3->空

///

4-> 5-> 6-> 7->空

Java解决方案1-简单

公共 无效连接( TreeLinkNode根) {

如果(根== null

返回;

LinkedList < TreeLinkNode > nodeQueue = 新的 LinkedList < TreeLinkNode > ();

LinkedList < Integer > depthQueue = 新的 LinkedList < Integer > ();

if ( root != null ){

nodeQueue。提供(根);

depthQueue。报价(1 );

}

(! nodeQueue。的isEmpty ()){

TreeLinkNode topNode = nodeQueue。民意调查();

int depth = depthQueue。民意调查();

如果( depthQueue。的isEmpty ()){

topNode。next = null ;

} 否则 如果( depthQueue。PEEK ()>深度){

topNode。next = null ;

} else {

topNode。下一个 = nodeQueue。偷看();

}

如果( topNode。离开!= ){

nodeQueue。报价(。topNode 左);

depthQueue。报价(深度+ 1 );

}

如果( topNode。右!= ){

nodeQueue。报价(。topNode 右);

depthQueue。报价(深度+ 1 );

}

} }

最后,开发这么多年我也总结了一套学习Java的资料与面试题,如果你在技术上面想提升自己的话,可以关注我,私信发送领取资料或者在评论区留下自己的联系方式,有时间记得帮我点下转发让跟多的人看到哦。


发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接