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

10-BST(二叉树)-建立二叉搜索树,并进行前中后遍历

题目

来源

3540. 二叉搜索树 - AcWing题库

思路

建立二叉搜索树(注意传参时用到了引用,可以直接对root进行修改),同时进行递归遍历;遍历可以分前中后三种写,也可以用标志来代替合在一起。其余详见代码。

代码

#include<bits/stdc++.h>
using namespace std;
const int N=110;
int l[N],r[N],w[N],idx;//l存储左子树,r存储右子树,w存储节点上的值
int root=0;
void insert(int& u,int x){ //加个引用,直接在root上可以做修改
    if(u==0) u=++idx,w[u]=x; //根节点为空,那么就需要建树
    else if(x<w[u])insert(l[u],x);
    else if(x>w[u])insert(r[u],x);
    //如果相等不需要处理
}
void dfs(int u,int t){
    if(u==0)return;
    if(t==0)cout<<w[u]<<" ";//前序遍历,先输出根节点
    dfs(l[u],t);//遍历左子树
    if(t==1)cout<<w[u]<<" ";//中序遍历,输出根节点
    dfs(r[u],t);
    if(t==2)cout<<w[u]<<" ";
    
}

int main(){
    int n;
    cin>>n;
    while(n--){
        int x;
        cin>>x;
        insert(root,x);
    }
    for(int i=0;i<3;i++)//做出三种遍历操作
    {
        dfs(root,i); //i=0,1,2分别表示前序,中序,后序遍历
        cout<<endl;
    }
    
    return 0;
}

相关文章:

  • Bash环境定制git分支提示符暨JDK版本切换脚本
  • 高光谱相机在水果分类与品质检测中的应用
  • 网络编程中客户端与服务器的搭建与协议包应用
  • linux 基础网络配置文件
  • MyBatis框架操作数据库一>xml和动态Sql
  • pnpm创建vite
  • STM32 DAC详解:从原理到实战输出正弦波
  • Spring 学习日记 day2
  • 使用fastapi部署stable diffusion模型
  • 如何记录Matlab程序运行过程中所占用的最大内存(续)
  • 天梯赛 L2-005 集合相似度
  • 配置 VSCode 的 C# 开发环境
  • 山寨币ETF的叙事,不灵了?
  • 【css酷炫效果】纯CSS实现全屏粒子连线
  • sparksql的Transformation与 Action操作
  • 解决git init 命令不显示.git
  • 3.1 在VisionPro脚本中添加CogGraphicLabel
  • LeetCode 热题 100_跳跃游戏(78_55_中等_C++)(贪心算法)
  • 技术路线图ppt模板_流程图ppt图表_PPT架构图
  • 购物车全选功能
  • 新能源车盈利拐点:8家上市车企去年合计净利854亿元,多家扭亏
  • 耶路撒冷发生山火,以防长宣布紧急状态
  • 云南铁路:打造“铁路+金融+产业”融合发展生态
  • 建发股份:将于5月6日召开股东大会,审议提名林茂等为公司新一届董事等议案
  • 文天祥与“不直人间一唾轻”的元将唆都
  • 日中友好议员联盟代表团访问中国人民对外友好协会