《轻松学算法》勘误——P179

这部分的第2小部分,关于二叉树的清空部分,清除某个子树的所有节点。这部分的内容有些问题,感谢某位读者提出的问题。

由于这部分写的确实比较仓促,当时没有注意到,node = null赋值这块,如果大家实际测试一下就会知道,这块是不对的,对java具体传递的实现比较了解的话会知道,这块实际上赋值是并不会生效的。另外,清除子树也没有必要去递归把所有内容全部清除,只需要在树上把这个节点摘除就好了。

所以清空树是很简单的,只需要把root赋值为null就好了。当然这里不能传递参数。具体实现如下。

但是要删除具体的某个节点的话,其实也很简单,不需要递归把所有子节点都删除了,只需要把这个节点从它的父节点上摘除出来就好了。

所以怎么删除子节点呢?首先要找到要删节点的父节点,然后确认这个节点是父节点的左节点还是右节点,确认之后直接setChild为null就好了。直白的说,直接对引用的修改例如赋值为null是不管用的,修改里面的内容确实可以生效的。

©原创文章,转载请注明来源: 赵伊凡's Blog
©本文链接地址: 《轻松学算法》勘误——P179

“《轻松学算法》勘误——P179”的3个回复

  1. P144页,直接查找的第二个for循环里面的else if不需要,因为target<array[i][j]根本不会进入第二个循环

发表评论

电子邮件地址不会被公开。 必填项已用*标注