通过键盘输入的扩充二叉树的层次遍历序列, 建立二叉树(如:序列:2,5,6,0,0,10,11,0,0,0,0 )。(设二叉树结点的数据为int型,其中扩充结点用'0'号表示)。然后按中序和后序输出此二叉树,求该树的叶结点个数和度数为2的结点个数)。
1条回答 默认 最新
- CSDN专家-天际的海浪 2021-11-18 16:01关注
你题目的解答代码如下:
#include "stdio.h" #include "malloc.h" typedef struct treenode { int data; struct treenode *lchild, *rchild; } TREENODE, *TREENODEPTR; #define N 50 void creattree(TREENODEPTR *root) { int value, r1, r2; TREENODEPTR t, q[N]; scanf("%d", &value); if (value) { *root = (TREENODEPTR)malloc(sizeof(TREENODEPTR)); (*root)->data = value; r2 = r1 = 1; q[r1] = *root; } else { printf("input error\n"); return; } while (r2 <= r1) { t = q[r2]; r2++; scanf("%d", &value); if (value == 0) t->lchild = NULL; else { t->lchild = (TREENODEPTR)malloc(sizeof(TREENODEPTR)); t->lchild->data = value; r1++; q[r1] = t->lchild; } scanf("%d", &value); if (value == 0) t->rchild = NULL; else { t->rchild = (TREENODEPTR)malloc(sizeof(TREENODEPTR)); t->rchild->data = value; r1++; q[r1] = t->rchild; } } } /*非递归中序遍历二叉树*/ void InOrder(TREENODEPTR root) { TREENODEPTR q[N]; int top = 0; TREENODEPTR p; p = root; do { while (p != NULL) { if (top > N) return; top = top + 1; q[top] = p; p = p->lchild; }; if (top != 0) { p = q[top]; top = top - 1; printf("%3d", p->data); p = p->rchild; } } while (p != NULL || top != 0); } /*非递归后序遍历二叉树*/ void PostOrder(TREENODEPTR root) { TREENODEPTR p, r, q[N]; int top = 0; r = NULL; p = root; while (p != NULL || top != 0) { while (p != NULL) { top++; if (top >= N) return; q[top] = p; p = p->lchild; } if (top > 0) { p = q[top]; if ((p->rchild == NULL) || (p->rchild == r)) { printf("%3d", p->data); r = p; top--; p = NULL; } else p = p->rchild; } } } main() { TREENODEPTR root; root = NULL; printf("输入的扩充二叉树的层次遍历序列为:\n"); creattree(&root); printf("非递归中序遍历二叉树:\n"); InOrder(root); printf("\n"); printf("非递归后序遍历二叉树:\n"); PostOrder(root); printf("\n"); }
如有帮助,望采纳!谢谢!
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 2无用
悬赏问题
- ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
- ¥15 Vue3地图和异步函数使用
- ¥15 C++ yoloV5改写遇到的问题
- ¥20 win11修改中文用户名路径
- ¥15 win2012磁盘空间不足,c盘正常,d盘无法写入
- ¥15 用土力学知识进行土坡稳定性分析与挡土墙设计
- ¥70 PlayWright在Java上连接CDP关联本地Chrome启动失败,貌似是Windows端口转发问题
- ¥15 帮我写一个c++工程
- ¥30 Eclipse官网打不开,官网首页进不去,显示无法访问此页面,求解决方法
- ¥15 关于smbclient 库的使用