首页 > 编程知识 正文

前序和中序相同的二叉树,二叉树中序遍历代码实现

时间:2023-05-05 14:59:34 阅读:34417 作者:4372

问题A:中二叉树提交: 154 |解决: 104 |时间限制: 1s |内存限制: 128MB

[提交][状态][讨论版][命题人:外部导入]

主题给出二叉树,描述通过输出二叉树的深度和中序扫描二叉树而得到的序列。 这个问题假设二叉树的节点数在1000以下。

输入数据分为多个组,第一行表示测试数据的组数n,下面的n行分别表示二叉树。 每个二叉树的节点都是正整数,如果数据为0,则表示当前节点为空;如果数据为-1,则表示二叉树的数据输入结束,-1表示未处理。 二叉树的结构是按层次顺序排列的。 (也就是说,如果第1层为1个整数,第2层为2个,第3层为4个,第4层为8个……,如果不存在某个节点,则用0来代替) ) ) ) ) ) ) ) ) ) )。

输出按照中顺序遍历各二叉树的深度以及二叉树而得到的序列。

范例输入21 -11 2 0 3 4 -1范例输出1 13 3 2 4 1太高

# include stdio.h # include stdio.h # define maxsize 1000 # include malloc.htypedefstructbtnode { int data; 结构Bt node * lchild; 结构Bt node * rchild; } BT节点; intgetdepth(Btnode*Bt ) {int DL,DR; if(Bt==null )返回0; ELSE{dl=getdepth(Bt-lchild ); dr=getdepth(Bt-rchild; 返回(dldr? DL:DR ) 1; } voidinordernonrecursion (Bt node * Bt ) {BTNode *stack[MaxSize],* p; //int front=0,rear=0; 有列的开头和结尾。 堆栈是top指针int top=-1; p=bt; wile (顶级!=-1||p!=空(while ) ) p!=null } {堆叠[ top ]=p; p=p-lchild; (if ) top!=-1 ) { p=堆叠[ top-- ]; printf('%d ',p-data ); p=p-rchild; }}intcreatetree(intn ) {int m,I; BTNode *bt,*p; BTNode *que[MaxSize]; int front=0,rear=0; while(N0 ) Bt=) Btnode* ) malloc ) sizeof ) Btnode ); Sanf('%d ',bt-data ); bt-lchild=bt-rchild=NULL; que[rear]=bt; do{for(I=0; i2; I )扫描(' % d ',m ); if(m==-1 ) {break; (if ) m!=0) ) p=(Btnode* ) malloc ) sizeof ) Btnode ); p-data=m; p-lchild=p-rchild=NULL; if(I==0) {que[front]-lchild=p; }elseif(I==1) {que[front]-rchild=p; ) }que[ rear]=p; } }前端; }while(m!=-1前端=rear; 前端=rear=0; 输入深度; 深度=get depth (Bt; printf('%d ',depth ); inordernonrecursion(Bt; printf((n ); n----; }}int main () {int n; scanf('%d ',n ); 创建树(n; }

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。