【数据结构与算法】二叉树中从每个叶子结点到根结点的路径

news2025/1/21 13:41:13

题目

  Qestion:输出二叉树中从每个叶子结点到根结点的路径


数据结构与定义

#include <stdio.h>
#include <stdlib.h>

typedef struct TreeNode
{
    int val;
    struct TreeNode *left;
    struct TreeNode *right;
} TreeNode;

二叉树形状

在这里插入图片描述


核心代码

void LeafToRoot(TreeNode *node, int length, int *Path)
{
    // 结点不存在
    if (node == NULL)
        return;
    // 结点存在
    else
    {
        Path[length] = node->val;
        length = length + 1;
        // 该结点为叶子结点
        if (node->left == NULL && node->right == NULL)
        {
            // 输出路径上每个结点的值
            for (int i = 0; i < length; i++)
            {
                printf("%d ", Path[i]);
            }
            printf("\n");
        }
        else
        {
            LeafToRoot(node->left, length, Path);
            LeafToRoot(node->right, length, Path);
        }
    }
}

核心代码快照

在这里插入图片描述


全部代码

#include <stdio.h>
#include <stdlib.h>

typedef struct TreeNode
{
    int val;
    struct TreeNode *left;
    struct TreeNode *right;
} TreeNode;

void inputTree(TreeNode *root)
{
    root->val = 1;
    root->left = (TreeNode *)malloc(sizeof(TreeNode));
    root->left->val = 2;
    root->left->left = (TreeNode *)malloc(sizeof(TreeNode));
    root->left->right = (TreeNode *)malloc(sizeof(TreeNode));
    root->left->left->val = 4;
    root->left->left->left = NULL;
    root->left->left->right = NULL;
    root->left->right->val = 5;
    root->left->right->left = NULL;
    root->left->right->right = NULL;

    root->right = (TreeNode *)malloc(sizeof(TreeNode));
    root->right->val = 3;
    root->right->left = (TreeNode *)malloc(sizeof(TreeNode));
    root->right->left->val = 6;
    root->right->left->left = (TreeNode *)malloc(sizeof(TreeNode));
    root->right->left->left->val = 8;
    root->right->left->left->left = NULL;
    root->right->left->left->right = NULL;
    root->right->left->right = NULL;
    root->right->right = (TreeNode *)malloc(sizeof(TreeNode));
    root->right->right->val = 7;
    root->right->right->left = NULL;
    root->right->right->right = NULL;
}

void LeafToRoot(TreeNode *node, int length, int *Path)
{
    // 结点不存在
    if (node == NULL)
        return;
    // 结点存在
    else
    {
        Path[length] = node->val;
        length = length + 1;
        // 该结点为叶子结点
        if (node->left == NULL && node->right == NULL)
        {
            // 输出路径上每个结点的值
            for (int i = 0; i < length; i++)
            {
                printf("%d ", Path[i]);
            }
            printf("\n");
        }
        else
        {
            LeafToRoot(node->left, length, Path);
            LeafToRoot(node->right, length, Path);
        }
    }
}
int main()
{
    int Path[20];
    int length = 0;
    TreeNode *root = new TreeNode;
    inputTree(root);
    LeafToRoot(root, length, Path);
    return 0;
}

结束语

  因为是算法小菜,所以提供的方法和思路可能不是很好,请多多包涵~如果有疑问欢迎大家留言讨论,你如果觉得这篇文章对你有帮助可以给我一个免费的赞吗?我们之间的交流是我最大的动力!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/718698.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[网络安全提高篇] 一二一.恶意软件动态分析Cape沙箱Report报告的API序列批量提取详解

终于忙完初稿,开心地写一篇博客。 “网络安全提高班”新的100篇文章即将开启,包括Web渗透、内网渗透、靶场搭建、CVE复现、攻击溯源、实战及CTF总结,它将更加聚焦,更加深入,也是作者的慢慢成长史。换专业确实挺难的,Web渗透也是块硬骨头,但我也试试,看看自己未来四年究…

HIve中的查询语句

文章目录 Hive中的查询语句1. 基础语法2. 基本查询&#xff08;Select…From&#xff09;2.1 数据准备&#xff08;0&#xff09;原始数据&#xff08;1&#xff09;创建部门表&#xff08;2&#xff09;创建员工表&#xff08;3&#xff09;导入数据 2.2 全表和特定列查询1&am…

【对象存储】那些事

最近在某个项目中使用了对象存储。以前看过一个新闻&#xff1a;某公司的对象存储被盗刷&#xff0c;一夜之间账户欠费几十万&#xff01;我们这点小买卖可经不起这么折腾&#xff01;所以下功夫研究了下&#xff0c;防患于未然。 说到防盗刷&#xff0c;我们还得了解对象存储是…

Jmeter使用之:怎么编写扩展函数(二)

目录 前言&#xff1a; 1、实现function的类的package声明必须包含".functions" 2、需要继承org.apache.jmeter.functions.AbstractFunction&#xff0c;并且实现相应的方法。 第一步&#xff1a;eclipse 导入jmeter目录&#xff1a;apache-jmeter-2.13libext下的…

【SLAM学习】FAST-LIO配置

本文主要记录如何配置FAST-LIO Eigen库 Eigen库安装&#xff1a; sudo apt install libeigen3-dev 查看Eigen版本&#xff1a; $ pkg-config --modversion eigen3 PCL库 PCL库安装&#xff1a; sudo apt install libpcl-dev 也可以指定版本安装&#xff1a; sudo apt …

AVS3:角度加权预测AWP

在一般的视频编码标准中帧间预测有两种方式&#xff1a;单向预测和双向预测。一般是将图像划分为矩形&#xff08;正方形&#xff09;块然后到参考帧中去搜索和它最接近的块作为预测块&#xff0c;单向预测只有一个预测块&#xff0c;而双向搜索会有2个预测块&#xff0c;将2个…

基于Java医院住院综合服务管理系统设计实现(源码+lw+部署文档+讲解等)

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

前端Vue自定义精美悬浮菜单按钮fab button 可设置按钮背景颜色 菜单按钮展开条目

前端Vue自定义精美悬浮菜单按钮fab button 可设置按钮背景颜色 菜单按钮展开条目,下载完整代码请访问uni-app插件市场地址&#xff1a;https://ext.dcloud.net.cn/plugin?id13321 效果图如下: # cc-suspensionMenu #### 使用方法 使用方法 <!-- scrollShow:是否显示滑动…

【Spark实战】Windows环境下编译Spark2 Linux上部署Spark On Yarn

Windows环境下编译Spark2 环境准备 git-2.14.1maven-3.9.2jdk-1.8scala-2.11.8zinc-0.3.15 主下载地址spark-2.3.4 github官方地址 编译准备 maven远程仓库使用的是阿里云的 解压源码包spark-2.3.4.zip,修改根模块的pom文件。主要目的是为了变更hadoop的版本号&#xff0c;…

飞控学习笔记-飞行器数学模型(2)

十字型模型 旋翼动力学 动力模型 电机模型 模型仿真 升力模型 力矩模型 反扭力 仿真

如何理解字符串不可变

字符串的不可变性: String类内部定义了 final char[ ] value ;数组用于存储字符串数据。 这里的value数组是通过final关键字修饰的,也就说字符串其实是一个常量,一旦在内存中申请出一个空间并且为其赋值之后这个空间中的字符串值就不可以修改了,将这个性质我们称之为不可变性。…

阿里云服务拆分部署

最近在工作中遇到需要将现网运行的服务拆分出一套&#xff0c;放置于本地机房&#xff0c;拆分服务运行有两种方案&#xff1a; 第一种是本地部署一个独立spring应用&#xff0c;业务上的要求是尽量隔离 第二种是采用阿里集群部署 采用第二种方案目前看是隔离度最高的

4.44ue4:相机抖动

1.创建相机抖动类 右键内容面板&#xff0c;点击创建蓝图类&#xff0c;搜索shake&#xff08;camera shake&#xff09; 2.使用相机抖动&#xff1a; 节点&#xff1a;play world .. api解释&#xff1a; epicenter&#xff1a;震源 inner Radius&#xff1a;内圈范围&a…

Git gui教程---第一篇 下载和安装

下载和安装 下载网址安装 下载网址 链接: 下载网址 有两种安装方式&#xff1a; 是用EXE的文件安装&#xff0c;我们用这个是便携版&#xff0c;好像是压缩包形式&#xff0c;没用过。 这是下载后的安装包文件&#xff0c;我的电脑是64位&#xff0c;所以下载的是64位。 安…

Unity2D横版游戏(深海潜水艇)

找到个挺有意思的小游戏Unity2D横版游戏&#xff08;深海潜水艇&#xff09; 这个也是曾经有段时间抖、音很火的一个小游戏。 鼠标左键点击让小艇上升 因为是unity开发的小游戏&#xff0c;可发布多个平台&#xff0c;有兴趣的拿去玩吧。 代码也是挺简单的 using UnityEngin…

【经典题目分析】数组分割问题

文章目录 698. 划分为k个相等的子集416. 分割等和数组 698. 划分为k个相等的子集 把一个数组&#xff0c;拆分成K个大小一样的子数组。方法可以是状态枚举&#xff0c;或者dfs class Solution { public:bool canPartitionKSubsets(vector<int>& nums, int k) {// 从…

C/C++图形库EasyX保姆级使用教程(三) 图形颜色的填充及相关应用

C/C图形库EasyX保姆级使用教程系列文章目录 第一章 Microsoft Visual Studio 2022和EasyX的下载及安装使用 第二章 图形化窗口设置以及简单图形的绘制 第三章 图形颜色的填充及相关应用 文章目录 C/C图形库EasyX保姆级使用教程系列文章目录前言一、如何填充颜色1.确定颜色1.1 …

TypeScript - 函数(下)

目录 1、在函数中声明this 2、其他需要知道的类型 2.1 void 2.2 object 2.3 unknow 2.4 never 2.5 Function 3、其余参数&#xff08;rest&#xff09;和参数 4、参数解构 5、函数的可分配性 1、在函数中声明this TypeScript 将通过代码流分析推断函数中应该是什么&…

jenkins_svn_maven持续集成

详解Jenkins &#xff0c;svn &#xff0c;maven 项目持续集成 第一步&#xff1a; 由于刚刚接触jenkins 并不知道他是个什么东西&#xff0c;首先百度一下&#xff0c;然后进入官网&#xff0c;下载安装包。 第二步 windows 安装&#xff1a; 下载完了&#xff0c;打开里面…

Spring Boot 中的 SAGA 事务

Spring Boot 中的 SAGA 事务 在分布式系统中&#xff0c;保证数据一致性是非常重要的问题。传统的 ACID 事务模型虽然能够保证单个数据库的数据一致性&#xff0c;但是在分布式系统中却很难实现。因此&#xff0c;近年来出现了一些新的事务模型&#xff0c;其中 SAGA 就是一种…