varinvertTree=function(root){if(root===null)returnnull;vartemp=root.left;root.left=invertTree(root.right);root.right=invertTree(temp);returnroot;};varinvertTree=function(root){if(root===null)return;//swapleftandrightchildvartemp=root.left;root.left=root.right;root.right=temp;//recurseintochildreninvertTree(root.left);invertTree(root.right);};这两个程序的递归细节是一样的吗?
2 回答
森林海
TA贡献2011条经验 获得超2个赞
不明白难点在哪里……这不就是大名鼎鼎的反转二叉树么……如果你明白什么是反转二叉数的话,那应该很容易理解,我们要做的就是把每个节点的leftchild和rightchild互换。在JavaScript里swap两个变量需要手动写临时变量temp。而要遍历每个节点做这样的处理,递归到它的children是必要的。事实上在这个case里,invertTree函数没有必要有返回值,因为它返回的就是它的参数root。所以加上返回值可能反而有点confusion。也许像下面这么写反而更容易看懂:varinvertTree=function(root){if(root===null)return;//swapleftandrightchildvartemp=root.left;root.left=root.right;root.right=temp;//recurseintochildreninvertTree(root.left);invertTree(root.right);};
添加回答
举报
0/150
提交
取消