1、%c,&data);if(data = #)T = NULL;elseT = (BiTree)malloc(sizeof(BiTNode);/生成根结点T-data = data;/构造左子树CreateBiTree(T-lchild);/构造右子树rchild);return 0; /输出void Visit(BiTree T)if(T-data != printf(%c ,T-/前序遍历void PreOrder(BiTree T)if(T != NULL)/访问根节点Visit(T);/访问左子结点PreOrder(T-/访问右子结点/中序遍历void InOrder(BiTree T)
2、InOrder(T-/后序遍历void PostOrder(BiTree T)PostOrder(T-前序/先序遍历:结果:1245736特征:访问根结点的操作发生在遍历其左右子树之前中序遍历:4275136访问根结点的操作发生在遍历其左右子树之中(间)后序遍历:4752631访问根结点的操作发生在遍历其左右子树之后第二题采用中序遍历的结果:4275136从大到小排序直接插入排序:void InsSort(int a, int k)int j;for(int i=1;i ai-1)int temp=ai;for(j=i-1;j=0 & ajtemp;j-)aj+1=aj;aj+1=temp;/
3、此处就是aj+1=temp;冒泡排序:void BubbleSort(int a, int k)int i,j,temp; for(j=0;jn-1;j+)for(i=0;n-1-j;i+)if(aiai+1)temp=ai;ai=ai+1;ai+1=temp;void main()int a=4,2,7,5,1,3,6;int k=sizeof(a)/sizeof(a0);/数组大小InsSort(a, k);/直接插入排序for(int i=0; itemp)保证的反复扫描待排序序列,在扫描的过程中顺次比较相邻的两个元素的大小,若逆序就交换位置。第一趟,从第一个数据开始,比较相邻的两个数据,(以升序为例)如果大就交换,得到一个最大数据在末尾;然后进行第二趟,只扫描前n-1个元素,得到次大的放在倒数第二位。以此类推,最后得到升序序列。如果在扫描过程中,发现没有交换,说明已经排好序列,直接终止扫描。所以最多进行n-1趟扫描稳定排序