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

LeetCode | 二叉树的前中后序遍历

LeetCode | 二叉树的前中后序遍历

OJ链接

在这里插入图片描述

在这里插入图片描述

  • 这里我们使用递归的方法来解决
  • 这里题目还要求我们返回这棵树的根
  • 我们这里需要先算出这个树有多大
  • 然后开辟空间
  • 再进行前序的遍历
void preorder(struct TreeNode* root,int* a,int* pi)
{
    if(root == NULL)
        return;
    a[(*pi)++] = root->val;

    preorder(root->left,a,pi);
    preorder(root->right,a,pi);
}
int TreeSize(struct TreeNode* root)
{
    return root == NULL ? 0 : TreeSize(root->left) + TreeSize(root->right) + 1;
}

int* preorderTraversal(struct TreeNode* root, int* returnSize) {
    //计算树有多少个节点
    int n = TreeSize(root);
    *returnSize = n;
    //开辟n个大小
    int* a = malloc(sizeof(int) * n);

    int i = 0;
    //前序遍历
    preorder(root,a,&i);
    return a;
}

  • 这里前序遍历完成后,我们的中序和后序也是一样的,直接CV即可

  • 中序遍历:OJ链接

int TreeSize(struct TreeNode* root)
{
    return root == NULL ? 0 : 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) {
    int n = TreeSize(root);
    int* a = (int*)malloc(sizeof(int) * n);

    *returnSize = n;
    int i = 0;
    inorder(root,a,&i);

    return a;
}
  • 后序遍历:OJ链接
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) {
    int n = TreeSize(root);
    int* a = (int*)malloc(sizeof(int) * n);

    *returnSize = n;
    int i = 0;
    postorder(root,a,&i);

    return a;
}

http://www.kler.cn/a/155572.html

相关文章:

  • HBase使用create创建表时报错ERROR: KeeperErrorCode = NoNode for /hbase/master
  • 新版 idea 编写 idea 插件时,启动出现 ClassNotFound
  • Python提取PDF和DOCX中的文本、图片和表格
  • 继承和多态(上)
  • 区块链技术在慈善捐赠中的应用
  • 设计模式:工厂方法模式和策略模式
  • C语言练习题
  • Bootstrap 5 中文文档 (简体中文)
  • JUC-AQS
  • 如何在 vue 项目中创建 svg 组件
  • 国标GB28181协议/RTSP视频监控汇聚平台EasyCVR(V.3.4)页面UI大更新
  • 【代码随想录算法训练营-第二天】【数组】977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II
  • Vue中mvvm的作用
  • SpringCloudAlibaba微服务 【实用篇】| Nacos配置管理
  • 【LangChain实战】开源模型学习(2)-ChatGLM3
  • React如何检查组件性能
  • 使用Pytoch实现Opencv warpAffine方法
  • sourceTree的下载和安装
  • java高校实验室排课学生考勤系统springboot+vue
  • 【数据结构高阶】AVL树
  • 跟着GPT学习shell脚本,理论与实践相结合的学习计划。
  • 页面表格高度自适应
  • UIkit-UIAlertContent
  • Django之ORM
  • 1、输入一行字符,分别统计出其中的英文字母、空格、数字和其他字符的个数。
  • Google Guava 区间工具使用详解