数据结构——从叶子结点到根节点的全部路径
问题
给定一个二叉树,返回所有从根节点到叶子节点的路径。
说明: 叶子节点是指没有子节点的节点。
示例:
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/binary-tree-paths
257.二叉树的所有路径
与此问题类似的问题
数据结构——二叉树的最长路径问题
思路:
- 遇到的是叶子结点,将当前结点输出(也就不需要进入数组了),并将数组的元素逆序输出。
- 遇到的不是叶子结点,将该元素进入数组。递归实现左右子树。
核心代码
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);}
数据结构——从叶子结点到根节点的全部路径相关推荐
- 数据结构----二叉树叶子结点到根节点的高度计算
数据结构----二叉树叶子结点到根节点的高度计算 代码: #include<stdio.h> #include<stdlib.h> typedef struct bstTree ...
- 3007基于二叉链表的二叉树叶子结点到根结点的路径的求解(附DFS在树里的应用分析,思路详解)
以下代码用到的前置知识:DFS算法 可以看这个视频~只用看这个就能懂了~ DFS深搜解决迷宫问题(原理分析+代码实现)_哔哩哔哩_bilibilihttps://www.bilibili.com/vi ...
- 输出二叉树中从每个叶子结点到根结点的路径,统计二叉树的度为1的结点个数,二叉树算表达式(C语言)
1.建立如下图表达式二叉树,并求值. (只涉及加减乘除运算) +*3##4##/8##4## (先序建立表达式) 2.统计二叉树的度为1的结点个数: 3.输出二叉树中从每个叶子结点到根结点的路径. # ...
- 输出每个叶子结点到根结点的路径
输出每个叶子结点到根结点的路径 void RouteToRoot(BitNodes root, stack<int> s) {if (root) {s.push(root->data ...
- 叶子结点和分支节点_什么是叶子节点,度?根节点?
展开全部 1.叶子也就是leaf指在网络结构中某些计62616964757a686964616fe59b9ee7ad9431333366303766算机,它们从比较靠近中心的计算机处接收信号,而不把信 ...
- 求二叉树指定结点到根的路径c语言,二叉树根节点到叶子结点和为指定值的路径...
题目描述 image.png 题解 解题思路与二叉树根节点到叶节点的所有路径和一题相似,都是采用递归算法.但这个题加了一点,要求保存路径到vector中. 为了保存路径,这里给递归函数传递一个vect ...
- 叶子结点和分支节点_统计二叉树分支及叶子结点的个数
以二叉链表存储结构存储二叉树,统计分支结点及叶子个数. (1)从键盘输入扩展的先序结点数据,以二叉链表存储该二叉树. (2)统计叶子结点个数. (3)统计分支节点个数. (4)要求程序通过一个主菜单进 ...
- 叶子结点和分支节点_教你玩转二叉查找树的结点插入操作
上一篇文章已经介绍过了二叉查找树的基本概念与查找结点的操作,本文继续介绍二叉查找树插入结点的操作. 二叉查找树的插入 现有只有一个结点的二叉查找树,该结点的值为50,现在我要往这颗二叉查找树依次插入9 ...
- 叶子结点和分支节点_数据结构中,满二叉树,结点,叶子节点,是什么?
除最后一层无任何子节点外,每一层上的所有结点都有两个子结点二叉树. 国内教程定义:一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是满二叉树.也就是说,如果一个二叉树的层数为K,且结点总数 ...
最新文章
- 提高C#编程水平的50个要诀[转载]
- 解决ViewPager嵌套后子ViewPager不能滑动的方法
- php删除两端,php删除字符串末尾子字符,删除开始字符,删除两端字符的示例代码...
- Swift - 移除页面视图上的所有元素
- Vue.js TypeScript 支持
- VTK:几何对象之GeometricObjectsDemo
- maven到底是个啥玩意~
- wpf中:xaml中的命名空间的引入方法
- javascript 商务通
- antd upload手动上传_基于MVVCTP5的文件上传
- Objective-C 三大要素
- BootStrap运行流程解析
- MATLAB解决常微分方程
- 【Latex学习】在IEEEtran模板中使用algorithm环境
- 【Linux】三、Linux 环境基础及开发工具使用(上篇)|开发工具|编辑器-vim使用|sudo提升权限问题|编译器 - gcc/g++使用|项目自动化构建工构建工具-make/Makefile
- html组态插件_组态 web组态 组态插件 编辑器 工业组态 物联网组态 组态编辑器...
- Yocto系列讲解[理论篇] 3 - meta layer recipe class概念介绍
- Java:使用POI实现word的docx文件的模板功能
- Err.number错误号和错误说明
- 神经网络neural network
热门文章
- [C#7] 1.Tuples(元组)
- 回顾build 2016:你好,这是微软迄今最好的Windows开发平台
- Nginx 模块的使用
- 【QGIS入门实战精品教程】3.1:QGIS如何连接SQL Server数据库?
- 【Microstation】第二章:Microstation三维建模基础知识
- C语言试题五十五之m个人的成绩存放在score数组中,请编写函数function,它的功能是:将高于平均分的人数作为函数值返回,将高于平均分的分数放在high所指定的数组中。
- 由于开发者通过接口修改了菜单配置_Android SDK开发艺术探索(四)个性化配置...
- python多进程和多线程一起使用_Python3多进程与多线程区别及使用(2.线程)
- 华为ar2200路由器 策略路由_路由交换篇 06 华为路由器RIP协议的配置
- php 判断update返回为0_PHP进行数据库更新update操作,返回状态