二叉树遍历的c和java实现

简介: 数据结构


C

#include<stdio.h>typedefintTelemType;
typedefstructBinaryTreeNode{
TelemTypedata;
structBinaryTreeNode*Left;
structBinaryTreeNode*Right;
}Node;
//创建二叉树,顺序依次为中间节点->左子树->右子树Node*createBinaryTree()
{
Node*p;
TelemTypech;
scanf("%d",&ch);
if(ch==0)     //如果到了叶子节点,接下来的左、右子树分别赋值为0    {
p=NULL;
    }
else    {
p= (Node*)malloc(sizeof(Node));
p->data=ch;
p->Left=createBinaryTree();  //递归创建左子树p->Right=createBinaryTree();  //递归创建右子树    }
returnp;
}
//先序遍历voidpreOrderTraverse(Node*root)
{
if( root )
    {
printf("%d ",root->data);
preOrderTraverse(root->Left);
preOrderTraverse(root->Right);
    }
}
//中序遍历voidinOrderTraverse(Node*root)
{
if( root )
    {
inOrderTraverse(root->Left);
printf("%d ",root->data);
inOrderTraverse(root->Right);
    }
}
//后序遍历voidlastOrderTraverse(Node*root)
{
if( root )
    {
lastOrderTraverse(root->Left);
lastOrderTraverse(root->Right);
printf("%d ",root->data);
    }
}
intmain()
{
Node*root=NULL;
root=createBinaryTree();
printf("二叉树建立成功");
printf("\n");
printf("前序遍历结果:\n");
preOrderTraverse(root);
printf("中序遍历结果:\n");
inOrderTraverse(root);
printf("后序遍历结果:\n");
lastOrderTraverse(root);
return0;
}

JAVA

先序遍历

publicvoidPreOrder1(BTreeClassbt) //先序遍历的递归算法{
PreOrder11(bt.b);
}
privatevoidPreOrder11(BTNode<Character>t) //被PreOrder1方法调用{ 
if (t!=null)
    { 
System.out.print(t.data+" "); //访问根结点PreOrder11(t.lchild); //先序遍历左子树PreOrder11(t.rchild); //先序遍历右子树    } 
}

中序遍历

publicvoidInOrder1(BTreeClassbt) //中序遍历的递归算法{
InOrder11(bt.b);
}
privatevoidInOrder11(BTNode<Character>t) //被InOrder1方法调用{ 
if (t!=null)
    { 
InOrder11(t.lchild); //中序遍历左子树System.out.print(t.data+" "); //访问根结点InOrder11(t.rchild); //中序遍历右子树    } 
}

后续遍历

publicvoidPostOrder1(BTreeClassbt) //后序遍历的递归算法{
PostOrder11(bt.b);
}
privatevoidPostOrder11(BTNode<Character>t) //被PostOrder1方法调用{
if (t!=null)
    { 
PostOrder11(t.lchild); //后序遍历左子树PostOrder11(t.rchild); //后序遍历右子树System.out.print(t.data+" "); //访问根结点    }
 }
相关文章
|
4月前
|
存储 Java
Java学习笔记 List集合的定义、集合的遍历、迭代器的使用
Java学习笔记 List集合的定义、集合的遍历、迭代器的使用
|
1月前
|
存储 Java 开发者
在 Java 中,如何遍历一个 Set 集合?
【10月更文挑战第30天】开发者可以根据具体的需求和代码风格选择合适的遍历方式。增强for循环简洁直观,适用于大多数简单的遍历场景;迭代器则更加灵活,可在遍历过程中进行更多复杂的操作;而Lambda表达式和`forEach`方法则提供了一种更简洁的函数式编程风格的遍历方式。
|
2月前
|
Java 程序员 编译器
Java|如何正确地在遍历 List 时删除元素
从源码分析如何正确地在遍历 List 时删除元素。为什么有的写法会导致异常,而另一些不会。
38 3
|
2月前
|
前端开发 小程序 Java
java基础:map遍历使用;java使用 Patten 和Matches 进行正则匹配;后端传到前端展示图片三种情况,并保存到手机
这篇文章介绍了Java中Map的遍历方法、使用Pattern和matches进行正则表达式匹配,以及后端向前端传输图片并保存到手机的三种情况。
25 1
|
2月前
|
存储 算法 Java
Java一分钟之-数组的创建与遍历
数组作为Java中存储和操作一组相同类型数据的基本结构,其创建和遍历是编程基础中的基础。通过不同的创建方式,可以根据实际需求灵活地初始化数组。而选择合适的遍历方法,则可以提高代码的可读性和效率。掌握这些基本技能,对于深入学习Java乃至其他编程语言的数据结构和算法都是至关重要的。
30 6
|
2月前
|
Java
【用Java学习数据结构系列】震惊,二叉树原来是要这么学习的(二)
【用Java学习数据结构系列】震惊,二叉树原来是要这么学习的(二)
30 1
|
2月前
|
算法 Java C语言
【用Java学习数据结构系列】震惊,二叉树原来是要这么学习的(一)
【用Java学习数据结构系列】震惊,二叉树原来是要这么学习的(一)
26 1
|
1月前
|
算法 Java
JAVA 二叉树面试题
JAVA 二叉树面试题
18 0
|
3月前
|
域名解析 分布式计算 网络协议
java遍历hdfs路径信息,报错EOFException
java遍历hdfs路径信息,报错EOFException
41 3
|
4月前
|
Java 容器
07 Java数组与数组操作(定义+遍历+排序+增删改查)(上)
07 Java数组与数组操作(定义+遍历+排序+增删改查)
60 8