【发布时间】:2021-03-15 05:42:04
【问题描述】:
这段代码能否递归地找到最右边的叶子。谢谢
Node* findRightMostLeaf(Node* curNode){
if (curNode== NULL)
return null;
if (curNode->rchild!= NULL)
return findRightMostLeaf(curNode->rchild);
if (curNode->lchild!= NULL)
return findRightMostLeaf(curNode->lchild);
else return curNode; }
【问题讨论】:
-
我建议你在一张纸上画一棵小树,从根节点(或任何其他节点)开始,看看这段代码带你去哪里,不长,你可以跟着它。
-
函数已经写好了,何不试试呢?如果它不符合您的期望,请提供一个最低限度的工作示例。
-
不,此代码不起作用。即使您提供了
Node的定义,curNode也是一个指针,因此您必须使用->而不是.,并且null是未定义的。 -
我在写这个函数之前确实画了它,但由于我是递归新手,我试图确保它是正确的,如果不是一些建议我哪里出错了
-
你的模型中的叶子是什么?它与节点不同吗?
标签: c++ algorithm recursion tree