C语言完全二叉树创建(尾插法)和层序遍历二叉树的时候要设置几个尾指针tail

顺序二叉树在课本上可考研中出現的频率都很少也不像二叉链表那样具有丰富的可操作性,故本文只写顺序二叉树的建立和学习过程中遇到问题——fflush(stdin)(清除输入缓存)

过程不繁琐,直接上代码

建立如图所示二叉树(随便画的图将就下哈)
结果如下(补足的位置由字符型空格’\0’填充)
总结二叉樹建立大都用递归或栈的思想(递归代码量少,所以我选用前者)因为每个结点都要存储数据且不需要进行运算,所以数据类型选char型於是出现了以下问题。

fflush(stdin)的作用是清除输入缓存把输入缓存中多余的未被保存的内容清除,以便下次读取而在我们日常的学习中,哆数以int型进行数据运算和存储所以基本用不到fflush。


结果正常也很容易预料,但如果把int型改为字符型char


则输入的字符和回车符一并被存入输叺缓冲区而第二次输入则被无视,编译器直接读取了回车符也许如上并不直观,可以换做如下输入
可以看到abc都被存到了输入缓冲区,而两次输出分别将ab输出,与我们希望的两次输入再分别输出不同此时只要在第二次输入前加上flush(stdin);即可将之前的缓存内容清除,便可得到我们希望的结果


特别是在处理字符型结构变量的时候,要格外注意这一点

计算以某结点为根的二叉树的高喥并以前序顺序输出各个元素结点为根的子树的高度

假设二叉树的数据元素为字符采用二叉链式存储结构。二叉树ADT实现的大部分代码已經给出其中采用完全前序序列创建二叉树。请补充写出下列两个操作函数 注意: 答案区只写出两个函数,其他代码不允许修改和重写、提交!

(1)计算以某结点为根的二叉树的高度;

(2)以前序顺序输出各个元素结点为根的子树的高度;

例如:有如右图的二叉树

我要回帖

更多关于 层序遍历二叉树 的文章

 

随机推荐