二叉树的建立和遍历程序代码(Java,C)
C语言
考虑到c语言的scanf(“%c”,&c)是输入后一个字符一个字符的取出这一特性,我们选择用createBiTree()方法接受输入的参数,然后直接建立。运用递归的方式创建二叉树的数据结构,结束条件为 c==’ ‘;
代码如下:
#include <stdio.h>
#include <stdlib.h>
/*山东科技大学小昝*/
typedef struct BiTNode{char data;struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;void createBiTree(BiTree *T){char c;scanf("%c",&c);if(' '==c){*T = NULL;}else{*T = (BiTNode *)malloc(sizeof(BiTNode));(*T)->data = c;createBiTree(&(*T)->lchild);createBiTree(&(*T)->rchild);}
}void visited(char c,int level){printf("节点 %c 的层数为: %d\n",c,level);
}void preOrderTraverse(BiTree T , int level){if(T){visited(T->data,level);preOrderTraverse(T->lchild,level+1);preOrderTraverse(T->rchild,level+1);}
}int main(){int level = 1;BiTree T = NULL;printf("请输入前序序列,空格代表结束:");createBiTree(&T);preOrderTraverse(T,level);return 0;
}
Java代码
因为java是面向对象的,所以我们采用内部类的方式定义我们二叉树的数据结构,和上面c的代码不同的地方还有再创建对象的时候虽然都用的递归建立,但是Java中我们没有和c语言当中scanf()这样的特性(上边说的),所以我们Java中采用接受一个data值,然后按照“左小右大”的规则,递归添加到以root为根的数据结构中。
代码如下:
package alizantest;
/*山东科技大学小昝*/
public class tree2 {//声明根结点static Node root;//建立节点的数据结构private class Node{int data;Node lchild;Node rchild;Node(int data){this.data = data;//当建立第一个节点的时候,方便初始化lchild = null;rchild = null;}}//初始化根public tree2(){root = null;}//创建树public void CreateBiTree(Node n,int data){if(root == null){root = new Node(data);}else{if(data < n.data){if(n.lchild==null){n.lchild = new Node(data);}else{CreateBiTree(n.lchild,data);}}else{if(n.rchild==null){n.rchild = new Node(data);}else{CreateBiTree(n.rchild,data);}}}}//先序遍历public void preOrder(Node root){if(root!=null){visit(root.data);preOrder(root.lchild);preOrder(root.rchild);}}//中序遍历public void middleOrder(Node root){if(root!=null){middleOrder(root.lchild);visit(root.data);middleOrder(root.rchild);}}//后续遍历public void forwardOrder(Node root){if(root!=null){forwardOrder(root.lchild);forwardOrder(root.rchild);visit(root.data);}}//作为先序遍历,中序遍历,后续遍历的访问函数private void visit(int data) {// TODO Auto-generated method stubSystem.out.print(data+" ");}public static void main(String[] args) {int a[] = {2,4,12,45,21,6,111}; tree2 t = new tree2();for(int i = 0;i<a.length;i++){t.CreateBiTree(t.root, a[i]);}t.preOrder(root);System.out.println();t.middleOrder(root);System.out.println();t.forwardOrder(root);}
}
我们要学好数据结构和算法,必须从基础做起,对于每一步是怎么执行的,我们都要按部就班的去敲代码理解。
二叉树的建立和遍历程序代码(Java,C)相关推荐
- 二叉树的建立与遍历完整代码_腾讯面试官这样问我二叉树,我刚好都会
前记 上周我投递出了简历,岗位是后端开发工程师.这周腾讯面试官给我进行了视频面试.面试过程中他问了二叉树的问题. 二叉树相关算法题,在面试中出现的次数非常非常多,所以我面试之前也有所准备.今天结合面试 ...
- 数据结构——二叉树的建立与遍历算法(实验报告)
实验名称:二叉树的建立与遍历算法 指导教师: 实验日期:2022年月日 实验地点: 成绩: 实验目的: 1.掌握二叉树的定义. 2.二叉树的链式存储结构及在链式存储结构中三种遍历(前 ...
- C语言二叉树实验报告流程图,二叉树的建立与遍历实验报告(c语言编写,附源代码).doc...
二叉树的建立与遍历实验报告(c语言编写,附源代码).doc 第 1 页,共 9 页二叉树的建立与遍历实验报告级 班 年 月 日 姓名 学号_ 1实验题目建立一棵二叉树,并对其进行遍历(先序.中序.后序 ...
- 二叉树的建立与遍历(数据结构)
之前上数据结构时,只是上课听听,没咋在课下实现,现在大二都快结束了,经过几波的ACM竞赛,感觉数据结构太重要了,带着兴趣和欲望重新学一下数据结构中的基础操作 我用的是先序次序输入二叉树中节点建立的二叉 ...
- 二叉树的遍历实验报告C语言,二叉树的建立与遍历实验报告(c语言编写,附源代码)...
程序用VC编写,实现建立一棵二叉树的功能,并对其进行遍历(先序.中序.后序),并且打印输出遍历结果. 二叉树的建立与遍历实验报告 级 班 年 月 日 姓名 学号_ 1.实验题目 建立一棵二叉树,并对其 ...
- 二叉树的建立和遍历算法 - 数据结构和算法47
二叉树的建立和遍历算法 让编程改变世界 Change the world by program 有童鞋会说,我们上节课研究这么多遍历的方法干啥呢?聪明的鱼油们怎么看?! 对于二叉树,思路方面我们已 ...
- 小朋友学数据结构(3):二叉树的建立和遍历
小朋友学数据结构(3):二叉树的建立和遍历 一.基本概念 BinaryTree.png 二叉树:每个结点的子结点个数不大于2的树,叫做二叉树. 根结点:最顶部的那个结点叫做根结点,根结点是所有子结点的 ...
- (九)二叉树的建立与遍历方法(c语言)(附代码与调试)
一.二叉树 首先我们聊一聊什么是二叉树,二叉树就是n个节点的有限集合,该集合或者空集(称为空二叉树),或者由一个根节点和两课互不相交的分别称为根节点的左子树和右子树的二叉树组成. 一看这,嗨哟,挺复杂 ...
- 二叉树的建立和遍历的各种问题
链表声明: //基本结构声明 #include<iostream> #include<queue> #include<stack> #include<cstd ...
最新文章
- 服务端如何防止订单重复支付!
- 洛谷P4301 [CQOI2013]新Nim游戏
- 【干货】专注用户体验,用最小代价验证你想法的可执行性
- 蓝桥杯大学组python试题_第十届蓝桥杯2019年C/C++ 大学A组省赛试题
- Android学习笔记:对Android应用进行单元测试
- mysql查询语句,int类型加引号居然也能查
- 扫雷游戏网页版_做游戏,单人行动可行吗(3.让我试试扫雷)
- python 3.8.0安卓_Python 3.8.0稳定版正式发布
- PHP stdClass to Array and Array to stdClass – stdClass Object
- cmake命令的python库的位置参数-DTORCH_PATH
- 和无用代码说再见!阿里文娱无损代码覆盖率统计方案
- Windows Server 2008更新后不断重启的问题
- java 多线程 异步调用
- mysql基本常用命令_mysql 的基本操作以及常用命令
- 怎么用proteus软件仿真单片机程序?
- 计算机械功的公式,机械功率计算公式
- 有关MSSQL2000在Win7上的安装
- 使用diskpart命令修复损坏的U盘
- 超标量处理器设计 姚永斌 第7章 寄存器重命名 摘录
- 笔记本电脑无法连接自己家的网络
热门文章
- 太好玩了,爬虫、部署API、加小程序,一条龙玩转知乎热榜!
- 上海交大发布 MedMNIST 医学图像分析数据集 新基准
- 基于新型忆阻器的存内计算原理、研究和挑战
- 联泰集群发布水晶系列工作站,用于深度学习场景
- Facebook发布Detectron2,下一个万星目标检测新框架
- ICLR 2020论文投稿2600篇,GNN、BERT、Transformer领跑热门研究方向
- 100%的程序员都想挑战的算法趣题!| 码书
- 复旦邱锡鹏教授公布《神经网络与深度学习》,中文免费下载 | 极客头条
- 漫画讲述人工智能简史
- 用Python分析《工作细胞》的一万多条评论后,非漫迷也要入番了