二叉树的建立和遍历程序代码(Java,C)
2017-08-13 14:58
489 查看
C语言
考虑到c语言的scanf(“%c”,&c)是输入后一个字符一个字符的取出这一特性,我们选择用createBiTree()方法接受输入的参数,然后直接建立。运用递归的方式创建二叉树的数据结构,结束条件为 c==’ ‘;
代码如下:
Java代码
因为java是面向对象的,所以我们采用内部类的方式定
4000
义我们二叉树的数据结构,和上面c的代码不同的地方还有再创建对象的时候虽然都用的递归建立,但是Java中我们没有和c语言当中scanf()这样的特性(上边说的),所以我们Java中采用接受一个data值,然后按照“左小右大”的规则,递归添加到以root为根的数据结构中。
代码如下:
我们要学好数据结构和算法,必须从基础做起,对于每一步是怎么执行的,我们都要按部就班的去敲代码理解。
考虑到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是面向对象的,所以我们采用内部类的方式定
4000
义我们二叉树的数据结构,和上面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 stub System.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中二叉树的建立和各种遍历实例代码
- JAVA建立二叉树和3种遍历
- java 二叉树 建立完全二叉树和广度优先遍历
- 一直二叉树的前序遍历和中序遍历的结果,重建该二叉树 Java代码实现
- JAVA六种遍历二叉树代码
- 二叉树建立以及先序、中序、后序、层次遍历(JAVA 实现)
- 二叉树的先序建立、遍历、镜像、节点数、深度的具体代码实现
- 二叉树定义及相关术语、节点数计算公式、代码实现(遍历,Java版)
- java实现二叉树的建立,前中后序遍历,层次遍历,深度,节点个数等
- 用java代码实现二叉树的遍历算法
- Java实现二叉树建立以及三种遍历
- 二叉树构造与遍历的C程序实现代码
- java--从txt文件中读取完全二叉树数据建立二叉树并打印出遍历结果
- java代码实现二叉树的遍历
- 二叉树的建立、遍历的简单代码
- 二叉树 - 建立与遍历使用Java
- 二叉树的建立和各种遍历(java版)
- [编写高质量代码:改善java程序的151个建议]建议67 不同的列表选择不同的遍历方法
- 数据结构--java实现二叉树的先序、中序、后序、层次遍历及根据先序中序建立二叉树
- [编写高质量代码:改善java程序的151个建议]建议67 不同的列表选择不同的遍历方法