二叉树遍历的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集合的定义、集合的遍历、迭代器的使用
|
2月前
|
存储 算法 Java
Java中,树与图的算法涉及二叉树的前序、中序、后序遍历以及DFS和BFS搜索。
【6月更文挑战第21天】Java中,树与图的算法涉及二叉树的前序、中序、后序遍历以及DFS和BFS搜索。二叉树遍历通过访问根、左、右子节点实现。DFS采用递归遍历图的节点,而BFS利用队列按层次访问。以下是简化的代码片段:[Java代码略]
33 4
|
11天前
|
Java 容器
07 Java数组与数组操作(定义+遍历+排序+增删改查)(上)
07 Java数组与数组操作(定义+遍历+排序+增删改查)
28 8
|
11天前
|
存储 Java API
07 Java数组与数组操作(定义+遍历+排序+增删改查)(下)
07 Java数组与数组操作(定义+遍历+排序+增删改查)
26 4
|
22天前
|
算法 Java
java使用递归及迭代方式实现前序遍历 中序遍历 后序遍历 以及实现层序遍历
java使用递归及迭代方式实现前序遍历 中序遍历 后序遍历 以及实现层序遍历
41 7
|
11天前
|
存储 算法 Java
LeetCode经典算法题:二叉树遍历(递归遍历+迭代遍历+层序遍历)以及线索二叉树java详解
LeetCode经典算法题:二叉树遍历(递归遍历+迭代遍历+层序遍历)以及线索二叉树java详解
29 0
|
2月前
|
Java
2021蓝桥杯大赛软件类国赛Java大学B组 完全日期 复杂遍历搜索
2021蓝桥杯大赛软件类国赛Java大学B组 完全日期 复杂遍历搜索
31 2
|
2月前
|
缓存 Java 测试技术
探讨Java中遍历Map集合的最快方式
探讨Java中遍历Map集合的最快方式
27 1
|
2月前
|
Java API 存储
java中Map遍历详解
java中Map遍历详解
|
2月前
|
Java
二叉树简单遍历、查找、删除(java)
二叉树简单遍历、查找、删除(java)
17 0