日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

数据结构练习题――中序遍历二叉树

發布時間:2023/12/16 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据结构练习题――中序遍历二叉树 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

數據結構練習題――中序遍歷二叉樹

描述
給定一顆二叉樹,要求輸出二叉樹的深度以及中序遍歷二叉樹得到的序列。本題假設二叉樹的結點數不超過1000。
輸入
輸入數據分為多組,第一行是測試數據的組數n,下面的n行分別代表一棵二叉樹。每棵二叉樹的結點均為正整數,數據為0代表當前結點為空,數據為-1代表二叉樹數據輸入結束,-1不作處理。二叉樹的構造按照層次順序(即第1層1個整數,第2層2個,第3層4個,第4層有8個…,如果某個結點不存在以0代替)
輸出
輸出每棵二叉樹的深度以及中序遍歷二叉樹得到的序列。
樣例輸入
2
1 -1
1 2 0 3 4 -1
樣例輸出
1 1
3 3 2 4 1

#include <iostream> #include<bits/stdc++.h> #include<algorithm>using namespace std; int node[1005],n; typedef struct tree{int data;struct tree *ltree,*rtree; }tree; void CreatTree(tree *&T,int x){if(node[x]==0){T = NULL;return;}T = (tree *)malloc(sizeof(tree));T->data = node[x];CreatTree(T->ltree,2*x);CreatTree(T->rtree,2*x+1); } void InOrderTraverse(tree *T) {if(T){InOrderTraverse(T->ltree);printf(" %d",T->data);InOrderTraverse(T->rtree);} } int Hight_Tree(tree *T){int l = 0,r = 0;if(T==NULL)return 0;l = Hight_Tree(T->ltree) + 1;r = Hight_Tree(T->rtree) + 1;return l>r?l:r; } int main(){ int t; tree *T; T = NULL; scanf("%d",&t); while(t--) { int x;n=1;while(scanf("%d",&x)&&x!=-1){node[n] = x;n++;}CreatTree(T,1);int len = Hight_Tree(T);printf("%d",len);InOrderTraverse(T);printf("\n"); } return 0; }

總結

以上是生活随笔為你收集整理的数据结构练习题――中序遍历二叉树的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。