天梯选拔:先序序列创建二叉树,输出先序序列、中序序列、后序序列并输出叶子结点数

思路分析:

  这道题考察二叉树的建立以及二叉树的前序遍历、中序遍历和后序遍历。首先按照先序建立二叉树。在这期间需要先建立一个结构体,包括当前节点的值,以及它的左儿子和右儿子。注意这里不能直接存左儿子和右儿子的值,因为每个节点是一个结构体,三个参数是一个整体,因此需要指向地址。

 代码实现:

#include<bits/stdc++.h>
using namespace std;
typedef struct node
{
       char data;//当前节点的值
       struct node *left;//左儿子
       struct node *right;//右儿子
}node;
node *tree;
int sum=0;
node *creattree()
{
     char ch;
     node *t;
     cin>>ch;
     if(ch=='#')
     t=NULL;///如果遇到了‘#’则返回空
          else{
         t=(node*)malloc(sizeof(node)); //动态分配内存
         t->data=ch;//给当前节点赋值
         t->left=creattree();//利用递归给左儿子赋值
         t->right=creattree();//利用递归给右儿子赋值
     }
    return t;     
}
void qianorder(node *t)//前序遍历
{    if
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值