老师说我的这个replaceAll()方法只是替换了一个子树,并没有替换所有与pattern匹配的子树,replaceAll()方法该如何改

图片说明图片说明

首先我要吐槽一下,你的编码习惯不太好,有几个点,变量名很多都是单字母,别人看起来非常累;else不带大括号;方法大括号有的换行有的不换行;方法名不明确;
接下来讲一下问题,你的问题出现在searchRoot这个方法中,一旦发现pattern和data相等就直接返回了,如果树中出现了多个相等的值,也只会返回第一个。同理,你searchTree返回的也应该是一个list。
同时,你还需要考虑几个问题,一个是和pattern相同的几个节点在一棵树上应该怎么replace,如何做到不重复replace
建议你在完成代码的时候,多做单元测试,多测试一些边界场景,以提高代码的健壮性