二叉树的递归

发布网友 发布时间:2022-04-22 07:52

我来回答

2个回答

热心网友 时间:2022-06-18 02:39

这不就是在二叉排序树上的递归查找,看程序
tree&
find(const
T&
d,
tree&
t){
if(t==NULL)
return
t;如果二叉树为空则返回空,查找失败
if(t->data==d)
return
t;否则,如果当前根结点关键码为d,则查找成功,当前根结点为待查找结点
if(d>t->data)
return
find(d,
t->right);如果比根的关键码大就递归查找右子树
return
find(d,
t->left);如果比根的关键码小就递归查找左子树
}
二叉树的递归定义的含义就是非空二叉树,除了根以外,左右子树都是二叉树(可以为空)

热心网友 时间:2022-06-18 02:40

递归=传递+回归,即任务的下放和结果的回收。
这个需要自己慢慢体会,其实所有递归算法实质上都是一样的,理解了就万变不离其宗了。
create(node
*root)
{
root=new
node;
写上关于root的信息//初始化root节点
if(root满足自定义的条件)//自定义一个递归的条件,即传递和回归的界限,这是必须的。
{
create(root->lchild);//建左子树
create(root->rchild);//建右子树
}
}
总体上来看,建一颗树,每一次调用creat()都是只创建一个节点,把剩下的任务下放给create(root->lchild)和create(root->rchild)
,而这两个也会重复第一个create(root)的做法,实质体现的是任务的不断下放,当达到最后的回归的界限的,结果又将不断回收,对应的是函数的不断返回,实质是退栈的过程。这个过程其实经历了一个不断进栈和不断出栈的过程,对应的是任务的不断下放和不断提交,最后栈空,即告全部任务完成!

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com