问题

给定一个二叉树,返回所有从根节点到叶子节点的路径。

说明: 叶子节点是指没有子节点的节点。

示例:

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/binary-tree-paths
257.二叉树的所有路径

与此问题类似的问题
数据结构——二叉树的最长路径问题

思路:

  1. 遇到的是叶子结点,将当前结点输出(也就不需要进入数组了),并将数组的元素逆序输出。
  2. 遇到的不是叶子结点,将该元素进入数组。递归实现左右子树。
    核心代码
void leaf_root(BiTree T,int *path,int len)
{if(T){if(T->lchild==NULL&&T->rchild==NULL)//当T为叶子结点时,逆序输出 {printf("%c->",T->data);for(int i=len-1;i>0;i--){printf("%c->",path[i]);}printf("%c",path[0]);printf("\n"); }else//当不为终端结点时,该节点对应的值进入数组 {path[len++]=T->data;leaf_root(T->lchild,path,len);leaf_root(T->rchild,path,len);}} }

全部代码(可以直接运行)

#include<stdio.h>
#include<bits/stdc++.h>
#define MAX  200
typedef char TElemType;
typedef int status;
typedef struct BiNode
{TElemType data;struct BiNode *lchild;struct BiNode *rchild;
}BiNode,*BiTree;
void CreateBiTree(BiTree &T)//二叉树的先序创建
{TElemType ch;scanf("%c",&ch);if(ch=='#')T=NULL;else {T=(BiNode*)malloc(sizeof(BiNode));if(!T)exit(-1);T->data=ch;CreateBiTree(T->lchild);CreateBiTree(T->rchild);}
}
void leaf_root(BiTree T,int *path,int len)
{if(T){if(T->lchild==NULL&&T->rchild==NULL)//当T为叶子结点时,逆序输出 {printf("%c->",T->data);for(int i=len-1;i>0;i--){printf("%c->",path[i]);}printf("%c",path[0]);printf("\n"); }else//当不为终端结点时,该节点对应的值进入数组 {path[len++]=T->data;leaf_root(T->lchild,path,len);leaf_root(T->rchild,path,len);}} }
int main()
{BiTree T;printf("创建树输入树T的先序序列(其中使用#代表空节点)\n");CreateBiTree(T);int path[MAX]={0};int len=0;printf("输出全部从叶子结点到根节点的路径:\n"); leaf_root(T,path,len);}

数据结构——从叶子结点到根节点的全部路径相关推荐

  1. 数据结构----二叉树叶子结点到根节点的高度计算

    数据结构----二叉树叶子结点到根节点的高度计算 代码: #include<stdio.h> #include<stdlib.h> typedef struct bstTree ...

  2. 3007基于二叉链表的二叉树叶子结点到根结点的路径的求解(附DFS在树里的应用分析,思路详解)

    以下代码用到的前置知识:DFS算法 可以看这个视频~只用看这个就能懂了~ DFS深搜解决迷宫问题(原理分析+代码实现)_哔哩哔哩_bilibilihttps://www.bilibili.com/vi ...

  3. 输出二叉树中从每个叶子结点到根结点的路径,统计二叉树的度为1的结点个数,二叉树算表达式(C语言)

    1.建立如下图表达式二叉树,并求值. (只涉及加减乘除运算) +*3##4##/8##4## (先序建立表达式) 2.统计二叉树的度为1的结点个数: 3.输出二叉树中从每个叶子结点到根结点的路径. # ...

  4. 输出每个叶子结点到根结点的路径

    输出每个叶子结点到根结点的路径 void RouteToRoot(BitNodes root, stack<int> s) {if (root) {s.push(root->data ...

  5. 叶子结点和分支节点_什么是叶子节点,度?根节点?

    展开全部 1.叶子也就是leaf指在网络结构中某些计62616964757a686964616fe59b9ee7ad9431333366303766算机,它们从比较靠近中心的计算机处接收信号,而不把信 ...

  6. 求二叉树指定结点到根的路径c语言,二叉树根节点到叶子结点和为指定值的路径...

    题目描述 image.png 题解 解题思路与二叉树根节点到叶节点的所有路径和一题相似,都是采用递归算法.但这个题加了一点,要求保存路径到vector中. 为了保存路径,这里给递归函数传递一个vect ...

  7. 叶子结点和分支节点_统计二叉树分支及叶子结点的个数

    以二叉链表存储结构存储二叉树,统计分支结点及叶子个数. (1)从键盘输入扩展的先序结点数据,以二叉链表存储该二叉树. (2)统计叶子结点个数. (3)统计分支节点个数. (4)要求程序通过一个主菜单进 ...

  8. 叶子结点和分支节点_教你玩转二叉查找树的结点插入操作

    上一篇文章已经介绍过了二叉查找树的基本概念与查找结点的操作,本文继续介绍二叉查找树插入结点的操作. 二叉查找树的插入 现有只有一个结点的二叉查找树,该结点的值为50,现在我要往这颗二叉查找树依次插入9 ...

  9. 叶子结点和分支节点_数据结构中,满二叉树,结点,叶子节点,是什么?

    除最后一层无任何子节点外,每一层上的所有结点都有两个子结点二叉树. 国内教程定义:一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是满二叉树.也就是说,如果一个二叉树的层数为K,且结点总数 ...

最新文章

  1. 提高C#编程水平的50个要诀[转载]
  2. 解决ViewPager嵌套后子ViewPager不能滑动的方法
  3. php删除两端,php删除字符串末尾子字符,删除开始字符,删除两端字符的示例代码...
  4. Swift - 移除页面视图上的所有元素
  5. Vue.js TypeScript 支持
  6. VTK:几何对象之GeometricObjectsDemo
  7. maven到底是个啥玩意~
  8. wpf中:xaml中的命名空间的引入方法
  9. javascript 商务通
  10. antd upload手动上传_基于MVVCTP5的文件上传
  11. Objective-C 三大要素
  12. BootStrap运行流程解析
  13. MATLAB解决常微分方程
  14. 【Latex学习】在IEEEtran模板中使用algorithm环境
  15. 【Linux】三、Linux 环境基础及开发工具使用(上篇)|开发工具|编辑器-vim使用|sudo提升权限问题|编译器 - gcc/g++使用|项目自动化构建工构建工具-make/Makefile
  16. html组态插件_组态 web组态 组态插件 编辑器 工业组态 物联网组态 组态编辑器...
  17. Yocto系列讲解[理论篇] 3 - meta layer recipe class概念介绍
  18. Java:使用POI实现word的docx文件的模板功能
  19. Err.number错误号和错误说明
  20. 神经网络neural network

热门文章

  1. [C#7] 1.Tuples(元组)
  2. 回顾build 2016:你好,这是微软迄今最好的Windows开发平台
  3. Nginx 模块的使用
  4. 【QGIS入门实战精品教程】3.1:QGIS如何连接SQL Server数据库?
  5. 【Microstation】第二章:Microstation三维建模基础知识
  6. C语言试题五十五之m个人的成绩存放在score数组中,请编写函数function,它的功能是:将高于平均分的人数作为函数值返回,将高于平均分的分数放在high所指定的数组中。
  7. 由于开发者通过接口修改了菜单配置_Android SDK开发艺术探索(四)个性化配置...
  8. python多进程和多线程一起使用_Python3多进程与多线程区别及使用(2.线程)
  9. 华为ar2200路由器 策略路由_路由交换篇 06 华为路由器RIP协议的配置
  10. php 判断update返回为0_PHP进行数据库更新update操作,返回状态