【数据结构】树的遍历

2023-11-19

“ Ctrl AC!一起 AC!”

目录

树有三种表示方法:

树的遍历有三种:

结点结构:

树的前序遍历递归版:

树的后序遍历递归版:

按前序遍历顺序建立一颗树:

树的层次遍历:


树有三种表示方法:

双亲表示法,孩子表示法和兄弟表示法。

这里我们使用指针式的孩子表示法。

树的遍历有三种:

前序遍历,后序遍历,层序遍历(二叉树还有中序遍历)

结点结构:

#define m 3 //m指树的度
typedef char datatype;
typedef struct node{
	datatype data;
	struct node *child[m];
}node, *tree;
tree root;

树的前序遍历递归版:

void preorder(tree p){
	int i;
	if(p!=NULL){
		printf("%c",p->data);
		for(i=0;i<m;i++){ //m为子节点的最大个数(即整个树的度) 
			preorder(p->child[i]); 
		}
	}
}

树的后序遍历递归版:

void postorder(tree p){
	int i;
	if(p!=NULL){
		for(i=0;i<m;i++){
			postorder(p->child[i]);
		}
		printf("%c",p->data);
	}
}

按前序遍历顺序建立一颗树:

tree createtree(){
	int i;char ch;
	tree t;
	if((ch=getchar())=='#') t=NULL;
	else{
		t=(tree)malloc(sizeof(node));
		t->data=ch;
		for(i=0;i<m;i++){
			t->child[i]=createtree();
		}
	}
	return t;
}

树的层次遍历:

void levelorder(tree t){
	tree queue[100]; //存放待输出的树的结点
	int f,r,i; //f,r指头尾指针
	tree p;
	f=0; r=1; queue[0]=t; //先放入根节点
	while(f<r){ //队列不为空 
		p=queue[f]; //取出头指针访问
		f++; //头指针移动 
		printf("%c",p->data); 
		for(i=0;i<m;i++){ //遍历子节点 
			if(p->child[i]){ //如果存在 
				queue[r]=p->child[i]; //将他加入队列,等待输出 
				r++;
			}
		}
	} 
}

感谢阅读!!!

“ Ctrl AC!一起 AC!”

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【数据结构】树的遍历 的相关文章

随机推荐

  • VMware无法创建共享文件夹

    1 Linux安装VM 1 chmod x VMware Workstation Full 14 1 3 9474260 x86 64 1 bundle 赋予执行权限 2 VMware Workstation Full 14 1 3 947
  • 二面字节被问到VARCHAR(M) 到底占用多少个字节?我跟面试官硬刚了半小时

    前言 这个问题其实很有迷惑性 问的是字节 不是字符 我们知道在计算机中只能存储二进制数据 所以要搞清楚这个问题 就要搞清楚下面2个问题 1 字节和字符的对应关系 2 varchar 到底能存多少个字节 为了搞清楚上面两个问题 又必须搞清楚m
  • jenkins中使用git遇到的坑

    error src refspec master does not match any root c32e20fd20e8 var jenkins home workspace DataPlatform git push u DataPla
  • RK3568 Android12 RK628编译报错问题

    Platform RK3568 OS Android 12 Kernel v4 19 206 SDK Version android 12 0 mid rkr1 问题 在dts中配置rk628时遇到编译报错 提示找不到rk628的label
  • Kubernets原理分解

    主节点 master 快速介绍 master也要装kubelet和kubeproxy 前端访问 UI CLI kube apiserver scheduler controller manager etcd kubelet kubeprox
  • 高考失利,还适合选计算机专业吗??

    前言 高考落榜 人生陷入低谷 对于很多人来说 这意味着梦想的破灭和无尽的绝望 但是 对于我来说 这只是人生旅程的一个起点 我喜欢编程也热爱编程 虽然网上很多言论说计算机行业已经很卷了 但是我却认为无论再哪个行业 你不卷 也同样落后于人 所以
  • 微信小程序中上传图片添加水印功能

    功能实现 参考文章 https blog csdn net yynikki article details 101763718 遇到的问题 实现过程中主要遇到的问题有以下两个 1 在微信开发者工具上图片显示完全正常 但在真机上生成的图片不全
  • 理解一维卷积

    根据我个人的经验和偏好 理解数学概念的最好方式之一就是赋予其物理意义 把f t 看做输入 g t 看做系统的衰减系数 卷积就比较好理解了 在某一时刻n 该系统对f n 的响应值就是f n xg 0 但系统的总输出C n 不仅跟当前输入的f
  • HackBar 使用教程

    啥是Hackbar Hackbar是一个Firefox的插件 它的功能类似于地址栏 但是它里面的数据不受服务器的相应触发的重定向等其它变化的影响 有网址的载入于访问 联合查询 各种编码 数据加密功能 这个Hackbar可以帮助你在测试SQL
  • Pytorch环境配置——cuda、、cudnn、torch、torchvision对应版本(最全)及安装方法

    Pytorch环境配置 cuda cudnn torch torchvision对应版本 最全 及安装方法 一 查询可支持的最高cuda版本 二 查看cuda cudnn pytorch torchvision对应版本 三 安装 3 1 W
  • Python蓝桥杯 基础练习 十六进制转八进制

    def huan n n format int n 16 o print n x int input for i in range 1 x 1 n input huan n format o 将数据格式化为八进制 int n 16 返回字符
  • 攻防世界 pwn cgfsb writeup

    攻防世界pwn cgfsb 这一题是关于格式化字符串漏洞的题 是一个单一漏洞题 不需要太多的绕过 拿到题目首先查看一下保护 可以看到 这是一个32位的程序 并且开启了Canary保护和NX保护 我们看一下IDA 进入IDA 按下F5可以得到
  • 字节跳动最爱考的前端面试题:CSS 基础

    注意 每道题前面出现的 xx 数字代表这道题出现的频次 此 CSS 基础是基于 30 篇前端面经整理出的问题和对应的回答 参考链接等 文章内容为拿到 Offer 的本人整理 2 写代码 css div 垂直水平居中 并完成 div 高度永远
  • 【Ubuntu+python2】编译并运行PyQt5程序

    文章目录 前言 一 环境搭建 1 下载sip和PyQt5 2 移除本机自带sip 二 解压编译 1 sip解压编译 2 PyQt5解压编译 make j4编译过程出现报错error waitForEvents is not a member
  • springBoot 统一返回结果类

    统一返回结果类有很多 个人感觉这种好用 记录一下 为以后 copy 准备 package com xxxx pro common import lombok Data import java util ArrayList import ja
  • 安装cmake过程出错:Error when bootstrapping CMake: Cannot find a C++ compiler that supports both C++11 and ...

    Error when bootstrapping CMake Cannot find a C compiler that supports both C 11 and the specified C flags 1 没有装gcc 和 g 2
  • javaFX环境配置

    javaFX环境配置 JavaFx在JDK1 8之后从JDK中脱离了出来 由于明天开始今天决定复现一下课本中出现的程序 哪料环境都被苟了一手 其实配置过程很简单 主要分成三个步骤 第一步 官网下载系统对应的JDK javaFX依赖包 第二步
  • 字符串转换时间,时区问题

    1 字符串转化为时间 解决了关于相差8个小时的时区问题 NSString dateStr 2012 05 17 11 23 23 NSDateFormatter format NSDateFormatter alloc init forma
  • TP5使用predis

    1 安装 composer require predis predis 2 使用 use use Predis Client class Index 使用predis public function index 配置连接的IP 端口 以及相
  • 【数据结构】树的遍历

    Ctrl AC 一起 AC 目录 树有三种表示方法 树的遍历有三种 结点结构 树的前序遍历递归版 树的后序遍历递归版 按前序遍历顺序建立一颗树 树的层次遍历 树有三种表示方法 双亲表示法 孩子表示法和兄弟表示法 这里我们使用指针式的孩子表示