当前位置: 首页 > news >正文

【数据结构与算法】二叉树基础OJ--下(巩固提高)

前言:

        上一篇文章我们讲到二叉树基础oj题目的练习,此篇文章是完成基础oj练习的完结篇。

传送-->【数据结构与算法】二叉树基础OJ -- 上 (巩固提高)-CSDN博客

💥🎈个人主页:​​​​​​Dream_Chaser~ 🎈💥

✨✨刷题专栏:http://t.csdn.cn/UlvTc

⛳⛳本篇内容:力扣与牛客网上二叉树OJ基础练习

目录

KY11 二叉树遍历

题目描述:

解题思路:

leetcode 94.二叉树中序遍历(数组存储)

题目描述:

​编辑

解题思路:

leetcode 145二叉树的后序遍历(数组存储)

题目描述:

解题思路: 


KY11 二叉树遍历

题目来源:二叉树遍历_牛客题霸_牛客网 (nowcoder.com)

题目描述:

        编一个程序,读入用户输入的一串先序遍历字符串,根据此字符串建立一个二叉树(以指针方式存储)。 例如如下的先序遍历字符串: ABC##DE#G##F### 其中“#”表示的是空格,空格字符代表空树。建立起此二叉树以后,再对二叉树进行中序遍历,输出遍历结果。 

输入描述:

输入包括1行字符串,长度不超过100。 

输出描述:

可能有多组测试数据,对于每组数据, 输出将输入字符串建立二叉树后中序遍历的序列,每个字符后面都有一个空格。 每个输出结果占一行。 

示例1

输入:abc##de#g##f###
输出:c b e g d f a 

解题思路:

先来复习一遍前序遍历,在此基础上,遍历一个比较难的字符串。 

画出其前序遍历图:

画出其前序遍历递归图(省略一部分同理的),剩下的可以根据上面的前序遍历图可求出

有了上面的基础,我们写出代码实现部分:

typedef int BTDataType;
typedef struct BTreeNode
{int val;struct BTreeNode* left;struct BTreeNode* right;
}BTNode;BTNode* BuyNode(BTDataType x)
{BTNode* root=(BTNode*)malloc(sizeof(BTNode));if(root == NULL){perror("malloc fail");return NULL;}root->val=x;root->left =NULL;root->right = NULL;return root;
}BTNode* CreateTree(char* a,int* pi)
{if(a[(*pi)] =='#'){(*pi)++;return NULL;}BTNode* root = BuyNode(a[(*pi)]);(*pi)++;root->left  = CreateTree(a, pi);root->right = CreateTree(a,pi);return root;
}
void InOrder(BTNode* root)
{if(root == NULL){return ;}InOrder(root->left);printf("%c ",root->val);InOrder(root->right);
}
int main()
{char a[100];scanf("%s",a);int i=0;BTNode* root=CreateTree(a,&i);InOrder(root);printf("\n");
}

执行: 

leetcode 94.二叉树中序遍历(数组存储)

题目来源:94. 二叉树的中序遍历 - 力扣(LeetCode)

题目描述:

给定一个二叉树的根节点 root ,返回 它的 中序 遍历 。

示例:

解题思路:

跟上一篇的前序遍历相差不大,就是将参数换个位置,其它不便说明。

代码实现:

int TreeSize(struct TreeNode* root)
{if(root == NULL){return 0;}return TreeSize(root->left) + TreeSize(root->right) +1;
}
void _inorder(struct TreeNode* root,int* a,int* pi)
{if(root==NULL){return ;}_inorder(root->left,a,pi);a[(*pi)++]=root->val;_inorder(root->right,a,pi);
}
int* inorderTraversal(struct TreeNode* root, int* returnSize){*returnSize = TreeSize(root);int* a=(int*)malloc(*returnSize *sizeof(int));int i=0;_inorder(root,a,&i);return a;
}

代码执行: 

leetcode 145二叉树的后序遍历(数组存储)

题目来源:145. 二叉树的后序遍历 - 力扣(LeetCode)

题目描述:

给你一棵二叉树的根节点 root ,返回其节点值的 后序遍历 

示例:

解题思路: 

跟上一篇的前序遍历相差不大,就是将参数换个位置,其它不便说明。

代码实现:

int TreeSize(struct TreeNode* root)
{return root==NULL ? 0 : TreeSize(root->left) + TreeSize(root->right)+ 1;
}
void _postorder(struct TreeNode*root,int* a,int* pi)
{if(root==NULL){return ;}_postorder(root->left,a,pi);_postorder(root->right,a,pi);a[(*pi)++]=root->val;
}
int* postorderTraversal(struct TreeNode* root, int* returnSize){*returnSize=TreeSize(root);int* a=(int*)malloc(*returnSize*sizeof(struct TreeNode));int i=0;_postorder(root,a,&i);return a;
}

         此篇文章到此结束,感谢你的来访!

相关文章:

  • UTC时间戳与北京时间转换
  • Docker:CentOS7安装Docker
  • 一文详解汽车电子LIN总线
  • 递归神经网络 (RNN)
  • OpenGL_Learn02
  • Redis测试新手入门教程
  • SpringBoot2.7.14整合redis7
  • audio 标签动态src 且src是http无法播放问题
  • 数据结构单链表的实现(C语言)
  • 【kubernetes】Debian使用Kubeadm部署Kubernetes失败:Connection Refused
  • 【Linux】权限
  • 京东平台数据分析:2023年9月京东扫地机器人行业品牌销售排行榜
  • 039-第三代软件开发-PDF阅读器
  • 21.12 Python 实现网站服务器
  • Kali安装docker
  • android图片蒙层
  • extjs4学习之配置
  • JavaScript新鲜事·第5期
  • Less 日常用法
  • Linux后台研发超实用命令总结
  • vuex 笔记整理
  • 阿里云爬虫风险管理产品商业化,为云端流量保驾护航
  • 机器人定位导航技术 激光SLAM与视觉SLAM谁更胜一筹?
  • 技术发展面试
  • 将 Measurements 和 Units 应用到物理学
  • 聚簇索引和非聚簇索引
  • 聊聊redis的数据结构的应用
  • 面试题:给你个id,去拿到name,多叉树遍历
  • 如何利用MongoDB打造TOP榜小程序
  • 我的业余项目总结
  • 异常机制详解
  • d²y/dx²; 偏导数问题 请问f1 f2是什么意思
  • ​520就是要宠粉,你的心头书我买单
  • ​如何防止网络攻击?
  • #我与Java虚拟机的故事#连载14:挑战高薪面试必看
  • #我与虚拟机的故事#连载20:周志明虚拟机第 3 版:到底值不值得买?
  • (2009.11版)《网络管理员考试 考前冲刺预测卷及考点解析》复习重点
  • (DenseNet)Densely Connected Convolutional Networks--Gao Huang
  • (附源码)springboot高校宿舍交电费系统 毕业设计031552
  • (亲测有效)解决windows11无法使用1500000波特率的问题
  • (转)重识new
  • **CI中自动类加载的用法总结
  • .bat批处理(三):变量声明、设置、拼接、截取
  • .Net8 Blazor 尝鲜
  • .NET构架之我见
  • ??在JSP中,java和JavaScript如何交互?
  • [20150904]exp slow.txt
  • [BZOJ]4817: [Sdoi2017]树点涂色
  • [Flexbox] Using order to rearrange flexbox children
  • [hibernate]基本值类型映射之日期类型
  • [leetcode 189][轮转数组]
  • [Linux]history 显示命令的运行时间
  • [moka同学笔记]yii表单dropdownlist样式
  • [noip模拟]计蒜姬BFS
  • [Operating System] {ud923} P4L4: Datacenter Technologies