C语言实现逆序打印叶子节点路径

该博客介绍了一种使用C语言将广义表转换为二叉树,并逆序打印所有叶子节点到根节点路径的方法。首先,通过字符串解析创建二叉树,然后使用栈来存储节点值,递归地从叶子节点遍历到根节点,打印路径。提供的示例输入为'a(b(c(d,e)),f(g,h(i,j)))',输出为'dcba', 'ecba', 'gfa', 'ihfa', 'jhfa'。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C语言实现逆序打印叶子节点路径

实现的功能,输入一个广义表,实现打印所有叶子结点到根节点的逆序路径
算法思想:
首先通过字符串的形式读入广义表
然后通过分析字符串进行广义表和二叉树的转换:

//根据广义表创建二叉树
BT* createBTByGLists(char* gLists, int nodeQuantity) {
   
    BT* rootNode = NULL;
    BT* currentNode = NULL;

    //创建指针数组作为栈结构
    BT** stack = (BT**) malloc(sizeof(BT*)* nodeQuantity);
    int top = -1;
    int flag = 0;
    int index = 0;
    char c = gLists[index];
    while (c != '\0') {
   
        switch (c) {
   
            case '(':
                stack[++top] = currentNode;
                flag = LEFT;
                break;
            case ',':
                flag = RIGHT;
                break;
            case ')':
                top--;
                break;
            case ' ':
                break;
            default:
                currentNode = (BT*) malloc(sizeof(BT));
                currentNode->data = c;
                currentNode->left = currentNode->right = NULL;

                if (rootNode == NULL) {
   
                    rootNode = currentNode;
                }         case LEFT:
                            stack[top]->left = currentNode;
                            break;
                        case RIGHT:
                            stack[top]->right = currentNode;
                            break;
                    }
                }
        }
        c = gLists[++index];
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值