首页 > 其他分享 >PTA 6-29 二叉树的遍历

PTA 6-29 二叉树的遍历

时间:2024-05-25 10:29:07浏览次数:15  
标签:结点 遍历 void 29 PTA Bnode Bptr 二叉树 root

本题构造一个含3个结点的二叉树,输入的第一个结点为根结点,第二个结点为根结点的左儿子,第三个结点为根结点的右儿子,输出这个二叉树的先序、中序和后序序列。

函数接口定义:

Bptr creat();/*构造3个结点的二叉树。
输入3个整数值,
输入的第一个值为根结点,
第二个值为根结点的左儿子,
第三个值为根结点的右儿子*/
void preorder(Bptr p);//先序遍历
void inorder(Bptr p);//中序遍历
void postorder(Bptr p);//后序遍历

裁判测试程序样例:

#include <stdio.h>
#include <malloc.h>

typedef struct node
{
    int data;
    struct node *Lson,*Rson;
}Bnode,*Bptr;

Bptr creat();
void preorder(Bptr p);//先序遍历
void inorder(Bptr p);//中序遍历
void postorder(Bptr p);//后序遍历

int main()
{
    Bptr root=NULL;
    root=creat();
    preorder(root);
    printf("\n");
    inorder(root);
    printf("\n");
    postorder(root);
    return 0;
}

/* 请在这里填写答案 */

输入样例:

1 2 3

输出样例:

1 2 3 
2 1 3 
2 3 1 

代码实现:

Bptr creat(){
    int a,b,c;
    scanf("%d %d %d",&a,&b,&c);
    Bptr root = (Bnode *)malloc(sizeof(Bnode));
    root->data = a;
    Bnode *p = (Bnode *)malloc(sizeof(Bnode));
    p->data = b;
    root->Lson = p;
    p = (Bnode *)malloc(sizeof(Bnode));
    p->data = c;
    root->Rson = p;
    return root;
}
void preorder(Bptr p){//先序
    if(p != NULL){
		printf("%d ",p->data);
		preorder(p->Lson);	//递归遍历左子树
		preorder(p->Rson);	//递归遍历右子树
	}
}
void inorder(Bptr p){//中序
    if(p != NULL){
		inorder(p->Lson);	//递归遍历左子树
        printf("%d ",p->data);
		inorder(p->Rson);	//递归遍历右子树
	}
}
void postorder(Bptr p){//后序
    if(p != NULL){
		postorder(p->Lson);	//递归遍历左子树
		postorder(p->Rson);	//递归遍历右子树
        printf("%d ",p->data);
	}
}

标签:结点,遍历,void,29,PTA,Bnode,Bptr,二叉树,root
From: https://blog.csdn.net/LgdCjp/article/details/139183828

相关文章

  • PTA 6-18 循环链表的追加
    单链表的结点存储结构如下所示:structNode{intdata;structNode*next;};请编写函数,将一个构造好的新结点p(结点地址),添加到指针rear指向的循环单链表的尾部(rear指向的是循环单链表尾的地址,循环单链表无附加头结点),并确保rear始终指向最后一个结点(如果有的话)。函数接口定......
  • 代码随想录算法训练营第第17天 | 110.平衡二叉树、257. 二叉树的所有路径、404.左叶子
    三道题都没想出来,还是要加强递归的练习110.平衡二叉树(优先掌握递归)再一次涉及到,什么是高度,什么是深度,可以巩固一下。题目链接/文章讲解/视频讲解:https://programmercarl.com/0110.平衡二叉树.htmlfunctiongetHeight(node){if(node===null)return0;letleftH......
  • P10298 [CCC 2024 S4] Painting Roads
    原题链接题解由易到难,先不考虑交替的事情,既然要尽量少的涂色,那么我最少要涂几条颜色的边?(由于图不一定联通,这里先考虑连通图的情况)如果一条边处于一个环内,那么这个边就可以不涂色。所以只要有环我就可以选择一条边不涂色,那么到最后,涂色的边构成一棵树接下来考虑这颗树能否实现......
  • 二叉树搜索树 洛谷P5076
    洛谷P1827#include<bits/stdc++.h>usingnamespacestd;intn,root,cnt,opt,x;structnode{intvalue,left,right,size,num;node(intl,intr,ints,intv):left(l),right(r),size(s),value(v),num(1){}node(){}}t[10010];voidu......
  • 代码随想录算法训练营第十五天 | 层序遍历 、226.翻转二叉树、101.对称二叉树
    层序遍历题目链接:学会二叉树的层序遍历,可以一口气打完以下十题:102.二叉树的层序遍历107.二叉树的层次遍历II199.二叉树的右视图637.二叉树的层平均值429.N叉树的层序遍历515.在每个树行中找最大值116.填充每个节点的下一个右侧节点指针117.填充每个节点的下一个右侧节点......
  • 算法打卡 Day18(二叉树)-层序遍历 + 翻转二叉树 + 对称二叉树
    文章目录层序遍历相关题目Leetcode226-翻转二叉树题目描述解题思路Leetcode101-对称二叉树题目描述解题思路层序遍历我们使用队列模拟二叉树的层序遍历。相关题目102.二叉树的层序遍历classSolution{public:vector<vector<int>>levelOrder(TreeNode......
  • 算法打卡 Day14(二叉树)-理论基础 + 递归遍历 + 迭代遍历 + 统一迭代
    文章目录理论基础满二叉树完全二叉树二叉搜索树平衡二叉搜索树二叉树的存储方式链式存储顺序存储二叉树的遍历方式二叉树的定义递归遍历leetcode144-二叉树的前序遍历leetcode145-二叉树的后序遍历leetcode94-二叉树的中序遍历迭代遍历前序遍历后序遍历中序遍历统......
  • 29.4K star! 仅需几行代码快速构建机器学习 Web 应用项目,无需前端技能!
    大家好,我是狂师!今天给大家推荐一款开源的Python库:Gradio!Gradio是一个开源的Python库,用于创建机器学习和数据科学的交互式应用和演示。项目地址:https://github.com/gradio-app/gradio1、项目介绍Gradio旨在简化展示和测试机器学习模型的过程,它允许用户通过构建漂亮的界面来......
  • iptables防火墙SNAT策略和DNAT策略
    目录1.SNAT策略及应用(1)SNAT原理与应用:(2)SNAT转换(1)前提条件:(2)实现方法:2.DNAT策略及应用(1)DNAT原理与应用:(2)DNAT转换(1)前提条件:(2)实现方法:1.SNAT策略及应用(1)SNAT原理与应用:SNAT应用环境:局域网主机共享单个公网IP地址接入Internet(私有IP不能在Internet中正常路由)SNAT原理:修改数据包的......
  • AP2917双路输出降压恒流驱动IC 5-100V 12W 摩托车灯照明IC
    产品描述AP2917是一款可以一路灯串切换两路灯串的降压恒流驱动器,高效率、外围简单、内置功率管,适用于5-100V输入的高精度降压LED恒流驱动芯片。内置功率管输出最大功率可达12W,最大电流1.2A。AP2917一路灯亮切换两路灯亮,其中一路灯亮可以全亮,可以半亮。AP2917工作......