递增有序输出二叉树叶子结点

递增有序输出二叉树叶子结点
如何实现查找结点后对字母进行排序呢

img

供参考:

#include<iostream>
using namespace std;
typedef struct BiTNode
{
    char data;
    struct BiTNode* lchild, * rchild;
}BiTNode, * BiTree;
char a[100];
int len = 0;
void InitTree(BiTree& T)
{
    T = NULL;
}
void creat(BiTree& T)
{
    char ch;
    cin >> ch;
    if (ch == '#')
        T = NULL;
    else
    {
        T = new BiTNode;
        T->data = ch;
        creat(T->lchild);
        creat(T->rchild);
    }
}
void preorder(BiTree T)
{
    if (T)
    {
        if (T->lchild == NULL && T->rchild == NULL)
        {
            a[len++] = T->data;
        }
        preorder(T->lchild);
        preorder(T->rchild);
    }
}
int main()
{
    BiTree T;
    InitTree(T);
    creat(T);
    preorder(T);
    char t;
    for (int i = 0; i < len - 1; i++)  
    {
        for (int j = 0; j < len - i - 1; j++) 
        {
            if (a[j] > a[j + 1])
            {
                t = a[j];
                a[j] = a[j + 1];
                a[j + 1] = t;
            }
        }
    }
    for (int k = 0; k < len; k++)
        cout << a[k];
    return 0;
}

定义一个全局数组
char arr[100];
int curr = 0;
把所有的 cout << T->data; 修改为 arr[curr++] = T->data;
在程序结束之前,对arr排序,再输出