标题:上次二叉树统计单词有个疑问
取消只看楼主
Emotiona
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:311
专家分:581
注 册:2017-3-7
结帖率:97.5%
 问题点数:0 回复次数:1 
上次二叉树统计单词有个疑问
程序代码:
void treeprint(struct tnode *p)
{
    if (p != NULL) {
        treeprint(p->right);
        printf("%4d %s\n", p->count, p->word);
        treeprint(p->left);
    }
}


这是二叉树中序遍历输出函数。

简单来说二叉树中序遍历为啥是先递归的右树,然后根,然后左树。
测试数据:    now is the tiome for all good men to come to the aid of their party

左树遍历完:men->is->good->for->com->all->aid(这里aid的左右叶节点为NULL)
root      : now
右树遍历完: of->party->the->their->time->to(这里to的左右节点为NULL)
当左树不满足条件,触发递归:aid->all->...->now, 然后根->now,然后右树触发->of->...->to。

左树先触发:aid->all->com->for->good->is->men->now->of->party->the->their->time->to

但是我昨天编译的时候是先触发的右树,而且结果才是正确的二叉树中序遍历。不明白为什么是先触发右树,而不是先左树达到触发条件递归:

右树先触发:to->time->their->the->party->of->new->men->is->good->for->com->all->aid
二叉树统计单词:https://bbs.bccn.net/thread-477096-1-1.html

[此贴子已经被作者于2017-5-20 09:30编辑过]

搜索更多相关主题的帖子: 二叉树 count 单词 统计 
2017-05-20 09:02
Emotiona
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:311
专家分:581
注 册:2017-3-7
得分:0 
原谅我sb了, 居然可以把输出倒着看。
2017-05-20 10:11



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-477177-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.978329 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved