为了账号安全,请及时绑定邮箱和手机立即绑定

二叉树前序递归遍历中当输出到最左下的结点时,然后是怎么输出最左下的结点的兄弟结点的;

二叉树前序递归遍历中当输出到最左下的结点时,然后是怎么输出最左下的结点的兄弟结点的;

qq_梵蒂冈_1 2017-03-14 22:48:01
void node::priorordertraverse(){ cout << this->index << "  " << this->date << endl; if (this->plchild != NULL)  this->plchild->priorordertraverse(); if (this->prchild != NULL)  this->prchild->priorordertraverse();}如上图;按上面的代码不是到4时就结束递归了吗;但是程序运行时他就能遍历出正确的顺序;4是怎么到5的;以及输出5后又是怎么到6的;求大神解决啊!!!!
查看完整描述

1 回答

已采纳
?
Caballarii

TA贡献1123条经验 获得超629个赞

在3的上面的时候,this->plchild->priorordertraverse();执行了4,this->prchild->priorordertraverse();执行了5。

同理,在2上面的时候,this->plchild->priorordertraverse();执行了3,this->prchild->priorordertraverse();执行了6

查看完整回答
1 反对 回复 2017-03-15
  • qq_梵蒂冈_1
    qq_梵蒂冈_1
    大神我还是不懂啊, 从1->2->3->4后 4的左子树和右子树不是都为NULL吗; 那么这个函数不是结束了吗
  • Caballarii
    Caballarii
    执行到3的时候要执行3的左子树和右子树,左子树是4,4执行结束了去执行3的右子树,就是5了
  • qq_梵蒂冈_1
    qq_梵蒂冈_1
    好像我把递归函数概念搞错了,现在明白了,谢谢
  • 1 回答
  • 0 关注
  • 1154 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信