上次二叉树统计单词有个疑问
程序代码:
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编辑过]